Création d'un sous-ensemble de colonnes basé sur une liste pouvant contenir des colonnes inexistantesSalut les utilisateurs,
J'ai lu une discussion antérieure liée à ce sujet mais je n'ai pas trouvé toutes les réponses.
Je voudrais savoir comment créer un sous-ensemble de colonnes basé sur une liste de colonnes donnée. Je sais que vous pouvez facilement le faire lorsque les colonnes de la liste donnée existent dans la table de données que vous souhaitez sous-ensemble.
Ce que je veux savoir, c'est comment rendre le script robuste afin qu'il ne donne pas l'erreur "Colonne non trouvée dans l'accès ou l'évaluation de 'mauvais argument' dans le cas où une colonne donnée dans la liste n'existe pas.
Par exemple, dans mon script ci-dessous, je veux toujours pouvoir créer un sous-ensemble de "Big Class.jmp" avec les colonnes, le nom, l'âge et la hauteur car ils existent mais mon script se décompose tel quel car j'ai un non- colonne existante dans la liste donnée appelée, aucune.
J'ai essayé de mettre Try () autour du code mais sans succès.
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" )
);
"
Merci,
Simon
Tableau de donnéesScriptingRe: Création d'un sous-ensemble de colonnes basé sur une liste qui peut contenir des colonnes inexistantesVoici un moyen simple de gérer cela.Il vérifie simplement si chaque colonne de la liste cols_of_interest existe dans la table de données, et sinon, il la supprime de la liste 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: Création d'un sous-ensemble de colonnes basé sur une liste pouvant contenir des colonnes inexistantesVoici une façon d'utiliser <
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" ) );