Interrogazione della tabella dati jmp con JSLCIAO,
Ho bisogno di ottenere un elenco di nomi distinti per età 12 e 13 in Big Class.jmp
Il mio modo attuale sembra essere molto inefficiente. (Seleziona dove, sottoinsieme...)
Qual è il modo per farlo con Query();
Grazie.
La mia sceneggiatura è:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
AgeList = {13, 15};
dt << Select where( Contains( AgeList, :Age ) > 0 );
SubsetDt = dt << Subset( Selected Rows, Columns( "name" ) );
Summarize( SubsetDt, DistinctNames = By( :(1) ) );
Close( SubsetDt, nosave );
Show( DistinctNames );Ri: Interrogare la tabella dati jmp con JSLGrazie mille, questo è esattamente ciò di cui ho bisogno.
Ri: Interrogare la tabella dati jmp con JSLGrazie Jim, @txnelson .
@tom_abramov , ci sono diversi modi per farlo. Dato che hai usato la parola interrogazione, ho sospettato che potresti avere una selezione di tipo SQL più complessa, quindi ho usato la funzione JMP query ().Di seguito è riportato un metodo semplice che non richiede la sintassi SQL. Un array associativo è un elenco con chiavi e le chiavi devono essere univoche.:name[idx] produce un elenco di tutte le righe con bambini di 12, 13 e 15 anni. L'array associativo ha solo nomi univoci con un valore associato pari a 1. I nomi univoci sono le chiavi dell'array associativo.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
idx = dt << get rows where(Contains(Agelist,:age));
uniq_names = Associative Array( :name[idx] ) <<GET keys=""></GET>
Ri: Interrogare la tabella dati jmp con JSLFare in modo che la query crei una tabella di dati non è davvero un inibitore.Lo script seguente è una semplice modifica dello script precedente, con l'aggiunta dello spostamento del contenuto della colonna Nome dalla tabella dati finale, in un elenco e quindi dell'eliminazione della tabella dati.Per quanto riguarda chiunque esegua lo script, non vengono mai visualizzate tabelle di dati.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ),invisible, Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
namesList = ndtQ:Name << get values;
Close( dt, NoSave );
close(ndtQ, nosave);Ri: Interrogare la tabella dati jmp con JSLÈ molto utile, grazie.
Sto usando JMP 15.
Un'altra domanda: posso salvare il risultato della query direttamente nell'elenco invece di creare una tabella di dati?
Questo perché non ho bisogno della tabella, ho bisogno di un elenco di nomi distinti.
In caso contrario, è ancora molto meglio di Seleziona dove -> Sottoinsieme.
Grazie.
Ri: Interrogare la tabella dati jmp con JSL@tom_abramov ,
Non hai specificato quale versione di JMP stai utilizzando.Non ricordo se la funzione JMP query() fosse disponibile per la prima volta in JMP 12 o 13. È possibile utilizzare le istruzioni SQL standard sulle tabelle JMP.Poiché Big Class ha un solo nome non univoco, Robert, per un bambino di 12 e 15 anni, ho modificato la tua richiesta per i bambini di 12, 13 e 15 anni.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ), Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
ndtQ << set name( "Unique BC Names" );
Wait( 3 );
Close( dt, NoSave );
Ecco il risultato:
