Come aggiungere valori di dati a una tabella in un ciclo for utilizzando Seleziona colonne Dove creare una nuova tabella dati complessiva di 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 combinati alla fine, quando il ciclo è terminato, e visualizzare il risultato .
A partire da ora non aggiunge nulla da nessuna parte; Finisco senza una nuova tabella di dati.
Ho tutto questo anche all'interno di un altro ciclo for, basato su un ID campione, ma penso che aggiungere che qui complicherebbe solo eccessivamente le cose per ora.
Tutti gli altri esempi che ho trovato nei forum della comunità JMP sono molto complicati, o almeno così sembrano, la creazione di array di dati e il loro trasferimento in tabelle di dati o cose del genere. Vorrei che la soluzione qui fosse il più semplice possibile. Ovviamente, contribuirò alla conversazione quando arriveranno le risposte, ma per ora sono completamente bloccato.
Grazie per l'aiuto,
Mike
AnaliticaTabella datiAltroSceneggiaturaUNRe: Come aggiungere valori di dati a una tabella in un ciclo for usando Seleziona colonne Dove creare una nuova tabella dati complessiva di 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 sottoimpostare:
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 << Ottieni righe selezionate)); che dovrebbe dirti se sono state selezionate righe. Inoltre, non mi sentirei a mio agio nell'usare ID come nomevariabile 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.
Penserei che a questo punto potrebbe essere più facile se avessimo un argomento in cui potremmo 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 anonimo o dati completamente falsi, ma dovrebbe comunque essere realistico (tipi di dati della colonna uguali, possibilità di testare casi diversi).
Re: Come aggiungere valori di dati a una tabella in un ciclo for usando Seleziona colonne Dove creare una nuova tabella dati complessiva di 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 perfettamente 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' all'esecuzione, ma sullo schermo non viene visualizzato nulla. Devo notare che tutto questo codice è anonimo, quindi c'è la possibilità di errori di ortografia ed errori di trascrizione, nonché la possibilità di confondersi con le versioni precedenti di ciò che è stato scritto. Immagino sia lecito ritenere che si possano fare delle somiglianze approssimative...
Non so se queste due linee debbano trovarsi all'interno dei loop o all'esterno di uno di essi, o se a questo punto ho bisogno di entrambi i loop. Ho bisogno di dare un'occhiata più approfondita alla sceneggiatura ancora una volta.
Sto anche discutendo alcuni argomenti separati riguardanti questo bit di codice in post separati. Qualcuno senior 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
Re: Come aggiungere valori di dati a una tabella in un ciclo for usando Seleziona colonne Dove creare una nuova tabella dati complessiva di dati di destinazioneNon sono sicuro al 100% di cosa vuoi fare qui, quindi suppongo 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 vuoi sottoimpostare, dovrai aggiungere le colonne selezionate all'interno del comando Sottoinsieme
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);Re: Come aggiungere valori di dati a una tabella in un ciclo for usando Seleziona colonne Dove creare una nuova tabella dati complessiva di dati di destinazioneDate un'occhiata al
dt << add rows(n);
per aggiungere nuove righe secondo necessità