¿Cómo escalo columnas por otra columna?Hola, tengo una tabla que se ve así, con algunas columnas nominales y luego muchas columnas numéricas.

Quiero crear una nueva tabla llamada "table_scaled" que copie las columnas nominales y divida las columnas N(#) entre la columna "N filas" y multiplíquela por 100 para obtener un porcentaje. Estoy intentando usar este código, pero solo obtengo una tabla nueva vacía con una columna en blanco. ¿Alguna sugerencia?
dt = Current Data Table();
NewTable("HOT_COLD_summary_scaled",
For( i = 1, i <= N Cols( HOT_COLD_summary ), i++,
dt << New Column(
Column( i ) << get name,
Numeric,
"Continuous",
Formula( (:column( i )*100) /(HOT_COLD_summary:N rows) )
)
)
);
Automatización y secuencias de comandosAcceso a los datosPersonalización masivaIngeniería de Calidad y ProcesosRe: ¿Cómo escalar columnas por otra columna?¿Podría proporcionar un ejemplo con valores correctos sobre cómo desea que se vea la mesa final? También puede proporcionar la tabla de datos que podría usarse para desarrollar el script (eliminar el script de origen y anonimizar si es necesario) ya que la imagen de la tabla no se puede usar para eso.
Re: ¿Cómo escalar columnas por otra columna?Hola Jarmo,
Gracias, seguro. Adjunté un resumen, que es la tabla de inicio y summary_scaled es lo que me gustaría escribir.
Re: ¿Cómo escalar columnas por otra columna?Si tiene JMP16+ aquí hay una opción
Names Default To Here(1);
dt = Open("$DOWNLOADS/summary.jmp");
dt_copy = dt << Subset(All Rows, Selected Columns(0), Output table("summary_scaled"));
close(dt, no save);
col_list = dt_copy << Get Column Names("String");
// first col isn't needed, second col is expected to be N Rows -> skip those
cols_of_interest = Remove(col_list, 1,2);
For Each({ncol}, cols_of_interest,
new_col = Eval(EvalExpr(
dt_copy << New Column(ncol ||"_scaled%", Numeric, Continuous, Formula(
100*Expr(Name Expr(AsColumn(ncol))) / :"N Rows"n
))
));
dt_copy << Move Selected Columns({new_col}, after(Eval(ncol)))
);
Si tiene un JMP más antiguo, tendrá que reemplazar For Each con For loop.