<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho un elenco composto da stringlist={Albert,Bert,Cathy,Daniel,Total} che sono nomi di colonne in una tabella
Vorrei creare nella stessa tabella 4 nuove colonne, con i nuovi nomi di colonna Albert Total, Bert Total, Cathy Total, Daniel Total dove la formula di Albert total = Albert/Total, Bert = Bert/Total, ecc.
I nomi di colonna albert, bert, cathy, daniel possono essere variabili, ma il nome di colonna total è sempre lo stesso.
Ecco cosa ho provato:
for(i=1,i<=nitems(elencostringhe),i++,
dt< )||" Totale",
formula((eval(parse(stringlist ))/:totale)
)
)
);
Ho provato varianti di evallist, evalexpr, parse senza alcun risultato...
Freddo!Stavo esaminando le soluzioni e stavo usando la soluzione seguente (nel caso qualcun altro fosse curioso): la tua è migliore perché non si basa sulla posizione della colonna ...
nlist=ncols(dt)
cols=dt<
totali=colonna("totale")<
for(i=1,i<=nlist-1,i++,
newcoleexpr=expr(
dt<< nuova colonna( char(cols )||"_Total",numeric,formula(expr(cols ))/expr(totali ))));
Eval(eval expr(newcoleexpr));
)
);
Questo farà il trucco:
dt = Nuova Tavola ( "Senza titolo" , Aggiungi righe ( 5 ) ,
Nuova colonna( "Alberto" , Numerico ,
Continuo , Formato ( "Migliore" , 12 ) , Imposta valori ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
Nuova Colonna ( "Berto" , Numerico , Continuo , Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 6 , 7 , 8 , 9 , 10 ] )) ,
Nuova Colonna ( "Catti" , Numerico , Continuo , Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 11 , 12 , 13 , 14 , 15 ] )) ,
Nuova Colonna ( "Daniele" , Numerico , Continuo , Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 16 , 17 , 18 , 19 , 20 ] )) ,
Nuova Colonna ( "Totale" , Numerico , Continuo , Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 23 , 43 , 222 , 32 , 444 ] )) ,
) ;
stringlist = dt << ottenere i nomi delle colonne ( corda ) ;
Per ( io = 1 , io <= N articoli ( stringlist ) , io ++,
una_col = stringlist [ io ] ;
Se ( una_col != "Totale" ,
new_col = una_col || " Totale" ;
stringa_col = "dt << nuova colonna(nuova_colonna, formula(:" || una_col || " / :Totale))" ;
eval ( analizzare ( stringa_col )) ;
) ;
) ;