<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai une liste composée de stringlist={Albert,Bert,Cathy ,Daniel,Total} qui sont des noms de colonnes dans une table
Je voudrais créer dans le même tableau 4 nouvelles colonnes, avec de nouveaux noms de colonnes Albert Total, Bert Total, Cathy Total, Daniel Total où la formule Albert total = Albert/Total, Bert = Bert/Total, etc.
Les noms de colonne albert, bert, cathy, daniel peuvent être variables, mais le total des noms de colonne est toujours le même.
Voici ce que j'ai essayé :
for(i=1,i<=nitems(stringlist),i++,
dt< )||"Totale",
formule((eval(parse(stringlist ))/:total)
)
)
);
J'ai essayé des variantes de evallist, evalexpr, parse sans résultat...
Cool!Je parcourais les solutions à la traîne et utilisais la solution ci-dessous (au cas où quelqu'un d'autre serait curieux) - la vôtre est meilleure car elle ne repose pas sur la position de la colonne ...
nlist=ncols(dt)
cols=dt<
totaux=column("total")<
pour(i=1,i<=nlist-1,i++,
nouvellecolexpr=expr(
dt<< nouvelle colonne( char(cols )||"_Total",numérique,formule(expr(cols ))/expr(totaux ))));
Eval(eval expr(newcolexpr));
)
);
Ça fera l'affaire:
dt = Nouveau tableau ( "Sans titre" , Ajouter des lignes ( 5 ) ,
Nouvelle colonne( " Albert " , Numérique ,
Continu , Format ( "Meilleur" , 12 ) , Définir les valeurs ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
Nouvelle colonne ( « Bert » , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir les valeurs ( [ 6 , 7 , 8 , 9 , dix ] )) ,
Nouvelle colonne ( "Cathy" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir les valeurs ( [ 11 , 12 , 13 , 14 , 15 ] )) ,
Nouvelle colonne ( "Daniel" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir les valeurs ( [ 16 , 17 , 18 , 19 , 20 ] )) ,
Nouvelle colonne ( "Total" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir les valeurs ( [ 23 , 43 , 222 , 32 , 444 ] )) ,
) ;
liste de chaînes = dt << obtenir les noms de colonnes ( chaîne ) ;
Pour ( je = 1 , je <= N articles ( liste de chaînes ) , je ++,
one_col = liste de chaînes [ je ] ;
si ( one_col != "Total" ,
nouveau_col = one_col || " Total" ;
col_string = "dt << nouvelle colonne(new_col, formula(:" || one_col || " / :Total))" ;
eval ( analyser ( col_string )) ;
) ;
) ;