Sumar todas las columnas con nombres almacenados en una listaHe creado una lista de columnas que contienen aproximadamente el mismo nombre a continuación:
ListaX = {};
Ylista = {};
for(i = 1, i < ncols(dt2), i++,
si(
contiene(dt2:i<< obtener nombre, "XXX") > 0, insertar en(Xlist, dt2:i<< obtener nombre),
contiene(dt2:i<< obtener nombre, "YYY") > 0, insertar en(Ylist, dt2:i<< obtener nombre),
)
);
Me gustaría crear una nueva columna que me dé una suma de Xcolumn e Ycolumn. A mi no me funciona del todo bien. Algo no debo estar haciendo bien... Por favor ayuda.
dt2 << Nueva columna ("Xsum", Numérico, Continuo, Formato ("Mejor", 12),
Fórmula(
suma(eval(listaX)),
)
);
Re: Sumar todas las columnas con nombres almacenados en una listaGuau Jim, gracias,
Esto funciona perfecto.
Re: Sumar todas las columnas con nombres almacenados en una listaLa sección de fórmula dentro de una nueva columna no se analiza y evalúa como cabría esperar.Descubrí que la mejor manera de manejar esto es generar una cadena literal de la frase Nueva columna completa, exactamente como la querrías si la escribieras manualmente, y luego ejecutar esa línea.El siguiente código hace eso
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 ||") ) );"));