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 righe con le stesse chiavi, ma in una tabella JMP diversa. Ho due tavoli. Uno di questi mappa gli ID dei campioni per i test chimici su diverse impostazioni di fattori (temperatura, tempo, numero di studio, ecc.). Riesco a ottenere con successo gli ID di esempio in un array. (Scusate, sono un totale principiante in questo.)
smplID = Associative array(:sampleid) << Get Keys;
Ora voglio utilizzare questi tasti per selezionare le righe nella seconda tabella (dove si trovano le mie risposte), invertire la selezione delle righe ed eliminare le righe. Questo riferimento , finora, non mi ha portato da nessuna parte. Forse la soluzione di seguito,come descritto qui,è più adatto per cominciare?
Summarize(dt, smpleID = by(:sampleid));
O forse è preferibile questo approccio ?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
Ad ogni modo, quello che voglio veramente sapere è come posso utilizzare uno qualsiasi di questi approcci per ripulire efficacemente una tabella dati dalle righe che non mi servono, prima di procedere ulteriormente con l'analisi dei dati. Immagino di dover imparare a eseguire il loop.
Sì, sto cercando di leggere la Guida allo scripting ogni volta che è possibile. Semplicemente non sono in grado di dargli la priorità.
Personalizzazione di massaRi: Ottieni valori di colonna univoci e usali per filtrare / pulire in una tabella diversaQuesta è la cosa. Devo stare molto attento con le manipolazioni del tavolo. Altrimenti potrei smarrire alcune misurazioni replicate. Quindi sto cercando di pulire i tavoli in anticipo, poiché questo aiuta a mantenere una visione d'insieme.
Ri: Ottieni valori di colonna univoci e usali per filtrare / pulire 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 poi unirla alla tabella da cui vuoi rimuovere i valori trovati.
Utilizzo dei dati di esempio Cars.jmp e Cars 1993.jmp di JMP come esempio. Cars 1993 sarà uno dei dati con cui filtreremo Cars utilizzando la colonna Model.
1. Creare una tabella di riepilogo da Cars 1993 con Model as Group
2. Unisci la nuova tabella di riepilogo alla tabella Cars con le seguenti impostazioni:

3. Dalla nuova colonna Match Flag puoi vedere due valori: Both e Main. Entrambi significa 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 (Drop multipli With Table potrebbe risolverlo, non sono sicuro). Anche in questo caso vorrai scegliere le colonne che vuoi mantenere, poiché ci saranno duplicati (almeno con questo esempio).

Entrambi possono anche essere scriptati abbastanza facilmente poiché JMP può eseguire la maggior parte degli script.
Ri: Ottieni valori di colonna univoci e usali per filtrare / pulire 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 decine di migliaia di righe. La seconda tabella in cui sto "ripulendo" 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 sento che le mie capacità sono estremamente limitate, lo scripting sembra ancora estremamente prezioso e soddisfacente quando si trova una soluzione, anche quando viene "strappata" dalla comunità. Quindi grazie mille ancora.)
Ri: Ottieni valori di colonna univoci e usali per filtrare / pulire 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 Summarize, dovrai riconvertirli in numerici (Summarize 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 i valori da datatable è possibile utilizzare Contiene con selezionare dove. Potrebbe non essere necessario invertire la selezione delle righe poiché puoi utilizzare ! (o Not()) per negare il risultato ottenuto dalle funzioni. Le attese sono qui solo per amore delle dimostrazioni:
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 disponi di molti dati, questo potrebbe non essere il modo più efficiente per farlo, ma è molto probabilmente il più semplice e inizierei con esso.