Ottieni valori di colonna univoci e usali per filtrare/ripulire in una tabella diversaSalve, quale sarebbe l'approccio per utilizzare, ad esempio, le chiavi in un array per selezionare o filtrare le righe con le stesse chiavi, ma in una tabella JMP diversa. Ho due tabelle. Uno di questi mappa gli ID dei campioni per i test chimici su impostazioni di fattori diversi (temperatura, tempo, numero di studio, ecc.). Sto ottenendo con successo gli ID di esempio in un array. (Scusa, sono un principiante assoluto di questo.)
smplID = Associative array(:sampleid) << Get Keys;
Ora voglio usare queste chiavi per selezionare le righe nella seconda tabella (dove sono le mie risposte), invertire la selezione delle righe ed eliminare le righe.Questo riferimento era, finora, non mi ha portato da nessuna parte. Forse la soluzione di seguito, come descritto qui, è più adatto per iniziare ?
Summarize(dt, smpleID = by(:sampleid));
O forse questo approccio è preferibile?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
Ad ogni modo, quello che voglio veramente sapere è come posso utilizzare uno di questi approcci per pulire efficacemente una tabella di dati per le righe che non mi servono, prima di procedere ulteriormente con l'analisi dei dati. Immagino di dover imparare a eseguire il ciclo.
Sì, sto cercando di leggere la Guida agli script ogni volta che è possibile. Non riesco proprio a dargli la priorità.
ScriptingRe: Ottieni valori di colonna univoci e usali per filtrare/ripulire in una tabella diversaPer ottenere valori univoci, tutti questi sono metodi validi e la loro velocità dipenderà dalla quantità di dati che hai. Una cosa da notare è che se vuoi prendere valori numerici univoci e usi Riepilogo, dovrai riconvertirli in numerici (Riepilogo li restituisce come stringhe).
Alcuni modi diversi per ottenere valori univoci:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_uniq = Associative Array(dt:age) << get keys;
Summarize(dt, summarize_uniq = by(:age));
dt_summary = dt << Summary(Group(:age), Freq("None"), Weight("None"), private);
summary_uniq = Column(dt_summary, 1) << get as matrix;
Close(dt_summary, no save);
Show(aa_uniq, summarize_uniq, summary_uniq);Per selezionare valori da datatable è possibile utilizzare Contiene con select where. Potrebbe non essere necessario invertire la selezione delle righe poiché è possibile utilizzare ! (o Not()) per negare il risultato ottenuto dalle funzioni. Le attese sono qui solo per motivi di dimostrazione:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
names_of_interest = {"KATIE", "LILLIE", "JOHN"};
wait(2);
dt << Select Where(Contains(names_of_interest, :name)) << Invert Row Selection << Hide and Exclude(1);// << clear select;
//Remove selections
wait(2);
dt << Clear Row States;
wait(2);
dt << Select Where(!Contains(names_of_interest, :name)) << Hide and Exclude(1);// << clear select;Inoltre, se hai molti dati, questo potrebbe non essere il modo più efficiente per farlo, ma è molto probabilmente il più semplice e inizierei con esso.
Re: Ottieni valori di colonna univoci e usali per filtrare/ripulire in una tabella diversaGrazie, questo mi ha aiutato MOLTO! Non sono sicuro di cosa significhi veramente "molti dati". La prima tabella che apro, oggi contiene circa 400 righe, ma questo numero è destinato a crescere con la continua implementazione di un sistema di gestione delle informazioni di laboratorio (LIMS) nella nostra organizzazione. Immagino che nel tempo ci saranno migliaia, forse anche diecimila righe. La seconda tabella in cui sto "ripulendo" via tutti, per me, gli ID campione irrilevanti ha già circa 50.000 righe.
A partire da ora, dopo aver implementato la tua soluzione, sto lavorando con una serie di ID campione. (Anche se ritengo che le mie capacità siano estremamente limitate, lo scripting sembra ancora estremamente prezioso e soddisfacente quando si trova una soluzione, anche quando viene "strappato" dalla comunità. Quindi grazie mille ancora.)
Re: Ottieni valori di colonna univoci e usali per filtrare/ripulire in una tabella diversaQuesti metodi saranno veloci per quella quantità di righe!
C'è un'altra soluzione che mi è venuta in mente, puoi prima creare una tabella di riepilogo e quindi unirla alla tabella da cui desideri rimuovere i valori trovati.
Utilizzo dei dati di esempio di JMP Cars.jmp e Cars 1993.jmp come esempio. Auto 1993 sarà uno dei dati con cui filtreremo Auto utilizzando la colonna Modello.
1. Crea una tabella di riepilogo da Cars 1993 con Model as Group
2. Unisci la nuova tabella di riepilogo alla tabella Auto con le seguenti impostazioni:

3. Dalla nuova colonna Match Flag puoi vedere due valori: Both e Main. Entrambi significano che il modello può essere trovato da entrambi i set di dati
Penso che tu possa farlo direttamente con Cars 1993 ma devi stare attento con i duplicati (i multipli di rilascio con Table potrebbero risolverlo, non sono sicuro). Anche in questo caso dovresti scegliere le colonne che vuoi mantenere, in quanto ci saranno dei duplicati (almeno con questo esempio).

Entrambi possono anche essere sottoposti a script abbastanza facilmente poiché JMP può eseguire la maggior parte degli script.