Additionner toutes les colonnes avec des noms stockés dans une listeJ'ai créé une liste de colonnes contenant à peu près le même nom ci-dessous :
Xlist = {} ;
Ylist = {} ;
for(i = 1, i < ncols(dt2), i++,
si(
contains(dt2:i<< get name, "XXX") > 0, insert into(Xlist, dt2:i<< get name),
contains(dt2:i<< get name, "YYY") > 0, insert into(Ylist, dt2:i<< get name),
)
);
Je voudrais créer une nouvelle colonne qui me donnera une somme de Xcolumn et Ycolumn. Cela ne fonctionne pas bien du tout pour moi. Je ne dois pas faire quelque chose de bien.... S'il vous plaît aider.
dt2 << Nouvelle colonne( "Xsum", Numérique, Continu, Format( "Meilleur", 12 ),
Formule(
somme(eval(Xlist)),
)
);
Re : Additionner toutes les colonnes avec des noms stockés dans une listeWaouh Jim, merci,
Cela fonctionne parfaitement.
Re : Additionner toutes les colonnes avec des noms stockés dans une listeLa section de formule dans une nouvelle colonne n'est pas analysée et évaluée comme on pourrait s'y attendre.J'ai trouvé que la meilleure façon de gérer cela est de générer une chaîne littérale de la phrase complète de la nouvelle colonne, exactement comme vous le voudriez si vous la tapiez manuellement, puis d'exécuter cette ligne.Le code ci-dessous fait cela
Names Default To Here( 1 );
dt2 = Current Data Table();
Xlist = "";
Ylist = "";
For( i = 1, i < N Cols( dt2 ), i++,
If(
Contains( column(dt2,i) << get name, "XXX" ) > 0, Xlist=Xlist || ":" || char(column(dt2,i) << get name) || ",",
Contains( column(dt2,i) << get name, "YYY" ) > 0, Ylist=Ylist || ":" || char(column(dt2,i) << get name) || ","
)
);
eval(parse("dt2 << New Column( \!"Xsum\!", Numeric, Continuous, Format( \!"Best\!", 12 ), Formula( Sum( "||Xlist ||") ) );"));
eval(parse("dt2 << New Column( \!"Ysum\!", Numeric, Continuous, Format( \!"Best\!", 12 ), Formula( Sum( "||Ylist ||") ) );"));