<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo una lista compuesta por stringlist={Albert,Bert,Cathy ,Daniel,Total} que son nombres de columna en una tabla
Me gustaría crear en la misma tabla 4 columnas nuevas, con nombres de columna nuevos Albert Total,Bert Total,Cathy Total, Daniel Total donde la fórmula de Albert total = Albert/Total, Bert = Bert/Total, etc.
Los nombres de columna albert, bert, cathy, daniel pueden ser variables, pero el total de nombres de columna es siempre el mismo.
Esto es lo que probé:
for(i=1,i<=nitems(lista de cadenas),i++,
dt< )||"Total",
formula((eval(parse(lista de cadenas ))/:total)
)
)
);
He probado variantes de evallist, evalexpr, parse sin éxito...
¡Fresco!Estaba buscando las soluciones y estaba usando la siguiente solución (en caso de que alguien más tenga curiosidad): la suya es mejor porque no depende de la posición de la columna ...
nlist=ncols(dt)
cols=dt<
totales=columna("total")<
for(i=1,i<=nlista-1,i++,
nuevocolexpr=expr(
dt<< nueva columna(char(cols )||"_Total",numérico,fórmula(expr(columnas ))/expr(totales ))));
Eval(eval expr(newcolexpr));
)
);
Esto hará el truco:
dt = Nueva tabla ( "Intitulado" , Agregar filas ( 5 ) ,
Nueva columna ( "Alberto" , Numérico ,
Continuo , Formato ( "Mejor" , 12 ) , Establecer valores ( [ 1 , 2 , 3 , 4 , 5 ] ) ) ,
Nueva columna ( "berto" , Numérico , Continuo , Formato ( "Mejor" , 12 ) ,
Establecer valores ( [ 6 , 7 , 8 , 9 , 10 ] )) ,
Nueva columna ( "Cathy" , Numérico , Continuo , Formato ( "Mejor" , 12 ) ,
Establecer valores ( [ 11 , 12 , 13 , 14 , 15 ] )) ,
Nueva columna ( "Daniel" , Numérico , Continuo , Formato ( "Mejor" , 12 ) ,
Establecer valores ( [ dieciséis , 17 , 18 , 19 , 20 ] )) ,
Nueva columna ( "Total" , Numérico , Continuo , Formato ( "Mejor" , 12 ) ,
Establecer valores ( [ 23 , 43 , 222 , 32 , 444 ] )) ,
) ;
lista de cadenas = dt << obtener nombres de columna ( cadena ) ;
Para ( i = 1 , i <= N elementos ( lista de cadenas ) , i ++,
una_col = lista de cadenas [ i ] ;
si ( una_col != "Total" ,
nueva_col = una_col || " Total" ;
col_cadena = "dt << nueva columna (nueva_columna, fórmula (:" || una_col || " / :Total))" ;
evaluar ( analizar gramaticalmente ( col_cadena )) ;
) ;
) ;