Come aggiungere valori di dati a una tabella in un ciclo for utilizzando Seleziona colonne Dove creare una nuova tabella di dati complessiva dei dati di destinazioneFor( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" ));<BR />);
Desidero aggiungere, progressivamente, attraverso ogni iterazione di un ciclo for, i dati specificati da un criterio di colonna (:Timepoint == LBCM) e combinarli in una tabella di dati combinata alla fine, quando il ciclo è terminato, e visualizzare il risultato .
A partire da ora non aggiunge nulla da nessuna parte; Finisco con nessuna nuova tabella di dati.
Ho tutto questo anche all'interno di un altro ciclo for, basato su un ID di esempio, ma penso che aggiungere che qui complicherebbe solo le cose per ora.
Tutti gli altri esempi che ho trovato nei forum della community di JMP sono molto complicati, o almeno così sembrano, costruire array di dati e trasferirli in tabelle di dati o cose del genere. Vorrei che la soluzione qui fosse il più semplice possibile. Certo, contribuirò alla conversazione non appena arriveranno le risposte, ma per ora sono completamente bloccato.
Grazie per l'aiuto,
Mike
Modellazione statistica avanzataOrganizzazione dei contenutiProgettazione di esperimentiPersonalizzazione di massaCondivisione e comunicazione dei risultatiUNRi: Come aggiungere valori di dati a una tabella in un ciclo for utilizzando Seleziona colonne Dove creare una nuova tabella dati complessiva dei dati di destinazioneLa selezione della parte Colonne è forse un guadagno di efficienza molto piccolo, ma soprattutto rende il codice più facile da leggere (secondo me).
Hai provato ad aggiungere stampe di debug all'interno dei loop per vedere se c'è qualcosa da sottoporre:
For(i = 1, i <= N Items(IDs), i++,
ID = IDs[i];
date_array = Associative Array({"date1", "date2", "date"}, {{}, {}, {}});
For(date = date_array << First, !Is Empty(date), date = date_array << Next(date),
dt << Select Where(:Timepoint == date);
Show(N Items(dt << Get Selected Rows));
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
);
);Ho aggiunto Show(N Items(dt << Get Selected Rows)); che dovrebbe dirti se sono state selezionate delle righe. Inoltre non mi sentirei a mio agio nell'usare ID come nome variabile se hai una colonna con un nome simile (potrebbe funzionare, non sono sicuro, ma evito tali nomi solo per essere sicuro). Lo sostituirei con currentID o qualcosa del genere.
Penso che a questo punto potrebbe essere più facile se avessimo un argomento in cui provare ad aiutarti a risolvere questo problema parte per parte.Una cosa che ci aiuterebbe molto sarebbe avere un set di dati di esempio. Il set di dati non deve essere grande, può essere anonimizzato o dati completamente falsi, ma dovrebbe comunque essere realistico (tipi di dati di colonna uguali, possibilità di testare casi diversi).
Ri: Come aggiungere valori di dati a una tabella in un ciclo for utilizzando Seleziona colonne Dove creare una nuova tabella dati complessiva dei dati di destinazioneGrazie per questo, Jarmo. Quindi il tuo codice è principalmente un guadagno di efficienza o un guadagno di funzionalità in buona fede?
Non funziona a titolo definitivo per me, ma devo dire che ho tutto questo in un altro ciclo for (o due):
For( i = 1, i <= N Items( IDs ), i++,
ID = IDs[i];
date_array = Associative Array( {"date1", "date2", "date"}, {{}, {}, {}} );
For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Where(:Timepoint == date);
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
//...
););Il computer sembra pensare un po' durante l'esecuzione, ma sullo schermo non appare nulla. Devo notare che tutto questo codice è reso anonimo, quindi c'è la possibilità di errori di ortografia ed errori di trascrizione, nonché la possibilità di essere confusi con versioni precedenti di ciò che è stato scritto. Immagino sia lecito ritenere che si possano fare somiglianze approssimative...
Non so se queste due linee dovrebbero essere all'interno dei loop o all'esterno di uno di essi, o se ho bisogno di entrambi i loop in questo momento. Ho bisogno di dare uno sguardo approfondito alla sceneggiatura ancora una volta.
Sto anche discutendo alcuni argomenti separati riguardanti questo pezzo di codice in post separati. Qualcuno anziano potrebbe farmi sapere se questa è un'etichetta accettabile, o se sarebbe preferibile dare la priorità al blocco di codice in un post e discutere gli argomenti separati nel singolo post, o se in entrambi i casi va bene?
Muchos Gracias,
Michael
Ri: Come aggiungere valori di dati a una tabella in un ciclo for utilizzando Seleziona colonne Dove creare una nuova tabella dati complessiva dei dati di destinazioneNon sono sicuro al 100% di cosa vuoi fare qui, quindi immagino un po'
Queste due righe sembrano che potrebbero esserci dei problemi:
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" )););
Puoi combinare le colonne che desideri all'interno del comando subset e la selezione delle righe può essere eseguita con << Seleziona dove (sembra che ti manchi Seleziona).
dt << Select Where(:Timepoint == date);
dt << Subset(Columns({"Timepoint", "TargetChannel"}), Selected Rows, Output table name("Subset"));Inoltre, se preferisci selezionare prima le colonne che desideri sottoinsieme, dovrai aggiungere Colonne selezionate all'interno del comando Sottoinsieme
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);Ri: Come aggiungere valori di dati a una tabella in un ciclo for utilizzando Seleziona colonne Dove creare una nuova tabella dati complessiva dei dati di destinazioneDare un'occhiata a
dt << add rows(n);
per aggiungere nuove righe secondo necessità