Creazione di un sottoinsieme di colonne basato su un elenco che potrebbe contenere colonne inesistentiCiao utenti,
Ho letto una discussione precedente relativa a questo argomento ma non ho trovato tutte le risposte.
Vorrei sapere come creare un sottoinsieme di colonne basato su un determinato elenco di colonne. So che puoi farlo facilmente quando le colonne nell'elenco fornito esistono nel datatable che desideri sottoinsieme.
Quello che voglio sapere è come rendere robusto lo script in modo che non dia l'errore "Colonna non trovata nell'accesso o nella valutazione di 'Argomento errato' nel caso in cui una determinata colonna nell'elenco non esista.
Ad esempio, nel mio script seguente, voglio essere ancora in grado di creare un sottoinsieme di "Big Class.jmp" con colonne, nome, età e altezza perché esistono, ma il mio script si interrompe così com'è perché ho un non- colonna esistente nell'elenco indicato denominata none.
Ho provato a inserire Try() nel codice ma senza successo.
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
big_class_cols = dt << Get Column Names();
show(big_class_cols);
subDt1 = dt << Subset(
Columns( cols_of_interest ),
Output Table Name( "Big Class 2" )
);
"
Grazie,
Simone
Accesso ai datiCombinazione e pulizia dei datiRi: Creazione di un sottoinsieme di colonne basato su un elenco che potrebbe contenere colonne inesistentiSoluzione molto elegante. Funziona alla grande.
Grazie Jim!Ri: Creazione di un sottoinsieme di colonne basato su un elenco che potrebbe contenere colonne inesistentiEcco un modo per utilizzare <
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols_of_interest = {name, age, height, none}; //names without scoping colon
AA1 = Associative Array( dt << Get Column Names() );
AA2 = Associative Array( cols_of_interest );
cols = AA2 << intersect( AA1 ) << get keys;
subDt1 = dt << Subset( Columns( cols ), Output Table Name( "Big Class 2" ) );
Ri: Creazione di un sottoinsieme di colonne basato su un elenco che potrebbe contenere colonne inesistentiEcco un modo semplice per gestire questa situazione.Controlla semplicemente se ogni colonna dell'elenco cols_of_interest esiste nella tabella dati e, in caso contrario, la rimuove dall'elenco cols_of_interest.
names default to here(1);
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For(i=nitems(cols_of_interest), i>=1, i--,
if(try(column(dt,char(cols_of_interest[i]))<<GET name=""></GET>