Creazione di un sottoinsieme di colonne basato su un elenco che può contenere colonne inesistentiSalve 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 non valido "nel caso in cui una determinata colonna nell'elenco non esiste.
Ad esempio, nel mio script di seguito, 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 rompe perché non ho un colonna esistente nell'elenco dato chiamato, nessuno.
Ho provato a inserire Try () attorno al 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,
Simon
Tabella datiScriptingOggetto: creazione di un sottoinsieme di colonne basato su un elenco che può contenere colonne inesistentiEcco un modo semplice per gestirlo.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>Re: Creazione di un sottoinsieme di colonne in base a un elenco che potrebbe contenere colonne inesistentiEcco un modo per usare <
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" ) );