Préparation des noms de colonne de liste pour une utilisation futureBonjour, j'essaie de récupérer et de préparer une liste de noms de colonnes à enregistrer dans une variable à utiliser ultérieurement. Le problème est que << Get Column Names() renvoie tout sous forme de liste de chaînes. Vous trouverez ci-dessous comment j'ai ajouté un " : " au début de chaque chaîne d'élément et quelle peut en être l'utilisation potentielle. Il reste encore beaucoup à faire.
names default to here(1);
dt = current data table();
col_names = dt << Get Column Names( ); // retrieves all col names
col_list = {}; // list for holding col names
// loop formats names in way usable to be called on as cols, not strings
for( i = 1 , i <= N items( col_names ), i++,
list_item = ":" || list_item;
Insert Into( col_list, list_item );
);
dt << Ungroup Scripts( col_list ); // example usageUn autre exemple serait l'utilisation de cette liste dans quelque chose comme :
Ajuster le modèle( Y( col_list ) ....
Ce que j'obtiens : { "ColA", "ColB" }
Ce que je veux : { :ColA, :ColB }
J'ai parcouru et trouvé plusieurs fils de discussion connexes à ce sujet, mais l'utilisation des noms de colonne comme entrée pour une fonction est quelque chose que je n'ai pas trébuché.Aucun conseil?
Modélisation statistique avancéeÉtudes de consommation et de marchéOrganisation du contenuFusion et nettoyage des donnéesExploration et visualisation des donnéesIngénierie de la qualité et des procédésPartage et communication des résultatsles fenêtresRe : Préparation des noms de colonne de liste pour une utilisation future@Thierry_S & @jthi - Merci à vous deux! eval() était ce que je cherchais ! J'ai compris que la colonne était une expression, mais j'ai complètement oublié cette commande.
Re : Préparation des noms de colonne de liste pour une utilisation futureSi vous souhaitez utiliser des colonnes au format :colname, vous pouvez les obtenir par exemple avec quelque chose comme ceci :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = dt << Get Column Names(Continuous, "String");
// dt << Get Column Reference(); /* all references */
/* one option */
col_list1 = dt << Get Column Reference(col_names);
/* second option */
col_list2 = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name))); /* Column() isnt necessary but makes it more robust */
);
show(col_list1, col_list2);
Habituellement, je les utilise comme chaînes, puis j'utilise Column() ou As Column() selon la situation (avec un certain nom Expr() dans le mélange).
Très souvent, l'utilisation d'une liste de chaînes de noms de colonnes suffit si vous combinez cela avec Eval().
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
col_names = {"OZONE", "CO", "SO2", "NO", "PM10"};
//obj = dt << Cluster Variables(Y(:OZONE, :CO, :SO2, :NO, :PM10));
obj = dt << Cluster Variables(Y(Eval(col_names)));
col_list = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name)));
);
obj = dt << Cluster Variables(Y(col_list)); /* wont work, see log for error */
/* Using Eval() and Eval Expr() */
cv_expr = EvalExpr(
obj = dt << Cluster Variables(Y(Expr(col_list)));
);
Eval(cv_expr);
/* using only Eval inside Y() should also work like earlier */
obj = dt << Cluster Variables(Y(Eval(col_list)));
Re : Préparation des noms de colonne de liste pour une utilisation futureSalut,
J'ai eu le même problème il y a quelque temps. La solution est simple : vous devez évaluer la liste pour renvoyer la série de colonnes.
dt << Ungroup Scripts( Eval (col_list ));
Meilleur,
TS