Come selezionare righe con 2 tabelle di dati diverse con colonna abbinata&*lo script di seguito non funziona potresti aiutarmi a eseguire il debug e inviarmi uno script funzionante? Voglio realizzare la funzione che "seleziona tutte le righe" in dt che corrisponde alla colonna: nome in dt1.
dt = Open( "$SAMPLE_DATA/BIG CLASS.JMP" );
dt1 = dt << Subset( Columns( Name ), Output Table Name( "1" ) );
dt1 << Delete Rows( 15 :: 40 ); // I want to relize the function of "select all rows that (dt:name==dt1:name) dt << Select where( With(dt1), By Matching Columns(name==name), );
;
SceneggiaturaRe: Come selezionare righe con 2 tabelle di dati diverse con colonna abbinataquesto è davvero bello! Ho usato il metodo 1.
Avevo bisogno di copiare e incollare il percorso del file della mia tabella di dati affinché funzionasse. non riuscivo a capire come cambiare la directory di lavoro in modo da poter semplicemente digitare i nomi dei file senza l'intero percorso.
Re: Come selezionare righe con 2 tabelle di dati diverse con colonna abbinataGrazie milleRe: Come selezionare righe con 2 tabelle di dati diverse con colonna abbinataQui ci sono 3 modi diversi per farlo..... e sono sicuro che altri potrebbero avere altri modi per farlo
names default to here(1);
dt = Open( "$SAMPLE_DATA/BIG CLASS.JMP" );
dt1 = dt << Subset( Columns( Name ), Output Table Name( "1" ) );
dt1 << Delete Rows( 15 :: 40 );
// Method one, read a name in dt1 and select it in dt, repeat
// for all rows in dt1
dt << clear rowstates;
For(i=1,i<= nrows(dt1),i++,
dt << select where(dt:name == dt1:name[i], current selection("extend"));
);
// Method 2, extract names from dt1 into a list, and then
// compare against the list for the
dt << clear rowstates;
nameList = dt1:name << get values;
dt << select where(contains(nameList,:name));
//Method 3, Update dt with dt1 and select matching rows
// this method would be the fastest on large data tables
dt << clear rowstates;
// add a column to use as a selector
dt1 << New Column( "selector", set each value( 1 ) );
dt << Update( With( dt1 ), Match Columns( :name = :name ) );
dt << select where( :selector == 1 );
dt << delete columns( "selector" );
dt1 << delete columns( "selector" );