Selezione delle righe e quindi ulteriore selezione in base a quellaHo una tabella di dati in cui posso selezionare le righe in base al risultato di una colonna.Vorrei quindi espandere quella selezione in base a un valore contenuto nelle righe precedentemente selezionate.
Provai
dt = Current Data Table();
dr << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt << select where( :reagentkit_id == h );
Non sembrava funzionare quando JMP si è bloccato.
La tabella dati potrebbe avere molte righe.
Il motivo per cui voglio farlo è che alcune volte ctrlrange è maggiore di 0,23 e voglio tutti i dati dal reagente (dove l'intervallo ctrl potrebbe non essere superiore a 0,23)
SceneggiaturaRe: Selezione delle righe e quindi ulteriore selezione in base a quellaLa tua premessa originale non funziona come pensi.<
Ecco un esempio che funziona utilizzando un criterio di selezione, che dovrebbe essere abbastanza efficiente.
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
dt << select where(:weight <100);
dt << hide and exclude;
dt_rgt = dt << Summary(
Group( :name ),
Freq( "None" ),
Weight( "None" ),
link to original data table(1)
);
dt_rgt << delete rows;
dt << clear rowstates;
dt_rgt << select all rows;
close( dt_rgt, nosave);Re: Selezione delle righe e quindi ulteriore selezione in base a quelladt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
dt << Subset( Output Table( "Sel" ), Selected Rows( 1 ), selected Columns( 0 ) );
dt_rgt = dt << Summary(
Group( :reagentkit_id ),
N Catagories( :reagentkit_id ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 )
);
//h = Column( Sel, "reagentkit_id" ) << get Values;
dt_rgt << select where( Contains( Sel, :reagentkit_id ) );
Non sono sicuro di come indicare che dovrebbe selezionare dove esamina la tabella Sel per i valori da selezionare nella tabella dt_rgt.
Qualche idea??
Re: Selezione delle righe e quindi ulteriore selezione in base a quellaDevo selezionare le righe con ctrlrange maggiore di 0.23. Quindi sottoimposta in un'altra tabella e quindi usa quella tabella per selezionare reagentkit_id dalla tabella originale?Re: Selezione delle righe e quindi ulteriore selezione in base a quellaBuona idea.
Ho provato questo
dt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt_rgt = dt << Summary(
Group( :reagentkit_id ),
N Catagories( :reagentkit_id ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 )
);
dt_rgt << select where( Contains( h, :reagentkit_id ) );
Ha creato una tabella di riepilogo che è stata collegata. Ma ha selezionato tutte le righe nella tabella di dati originale. Non eliminare le righe di dati che avevano reagentkit_id selezionato perché uno dei suoi :ctrlrange era superiore a 0,23.
Se commento dt_rgt << seleziona dove( Contiene( h, :reagentkit_id ) ); funziona. Ciò significa che in una piccola tabella con 2.150 righe seleziona le 6 righe che hanno ctrlrange maggiore di 0,23 e crea la tabella di riepilogo.
Re: Selezione delle righe e quindi ulteriore selezione in base a quellaSe l'elenco "h" è molto lungo, sarà uno script molto intenso. Suggerirei di creare un raggruppamento di tabelle di dati di riepilogo sulla colonna :reagentkit_id. Assicurati di aver selezionato "Collega alla tabella di dati originale", quindi seleziona tutte le righe nella tabella di riepilogo. Il collegamento alla tabella originale forzerà la selezione di tutte le corrispondenze della tabella di riepilogo nella tabella originale.Re: Selezione delle righe e quindi ulteriore selezione in base a quellaEra un errore di battitura quando ho scritto il post sul forum.
sto provando
dt = Current Data Table();
dt << select where( :ctrlrange > 0.23 );
h = Column( dt, "reagentkit_id" ) << get Values;
dt << select where( Contains( h, :reagentkit_id ) );
Utilizzandolo su una tabella con oltre 2,9 milioni di righe, JMP non risponde.Immagino che questo sia un processo intensivo
Re: Selezione delle righe e quindi ulteriore selezione in base a quellaCredo che questo sia quello che vuoi
dt=current data table();
// You have a typo.....you are specifying dr and it should be dt....I assume
//dr<<SELECT where="">0.23);
dt<</SELECT><SELECT where="">0.23);
h=Column(dt, "reagentkit_id")<<GET values=""></GET></SELECT>
Re: Selezione delle righe e quindi ulteriore selezione in base a quellaHo visto "espandi" nella selezione ma non sono riuscito a capire come espandere in base alla selezione precedente da un valore in un'altra colonna di quella selezione.