Hola queridos expertos/usuarios de jmp,
Tengo una tabla de datos de formato fijo con formatos de nombres de columnas similares como este (siempre nombres de dos columnas similares distinguidos por _1):
NOMBRE, C1, P2... C1_1, P2_1.... (en realidad, muchas columnas con esta regla de nomenclatura)
Me gustaría crear nuevas columnas con la siguiente fórmula: por ejemplo,
C1_cal por: C1-C1_1
P2_cal por: P2-P2_1
...
¿Cómo uso JSL para lograr un bucle para esto? ¡Muchas gracias!
Se hacen muchas suposiciones con respecto a los nombres y el orden de las columnas
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("Name", Character, "Nominal", Set Values({})),
New Column("Column1", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column("Column2", Numeric, "Continuous", Format("Best", 12), Set Values([2])),
New Column("Column1_1", Numeric, "Continuous", Format("Best", 12), Set Values([2])),
New Column("Column2_1", Numeric, "Continuous", Format("Best", 12), Set Values([4]))
);
all_colnames = dt << Get Column Names("String");
Remove From(all_colnames, 1); // Drop first column
For Each({col_name}, all_colnames[1::(N Items(all_colnames)/2)],
Eval(Substitute(
Expr(
dt << New Column(col_name|| "_cal", Numeric, Continuous, Formula(
_firstcol_ - _secondcol_
));
),
Expr(_firstcol_), Name Expr(AsColumn(col_name)),
Expr(_secondcol_), Name Expr(AsColumn(col_name || "_1"))
));
);
Scripting Index y Scripting Guide tienen buena información sobre JMP Scripting.Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute es una buena publicación sobre cómo construir fórmulas a partir de variables
¡¡¡Muchas gracias!!!
si quisiera cambiar el formulario a C1-3.5*C1_1:
¿Debo cambiar el código al siguiente formato?
_primeracol_ - 3.5*(_segundacol_)
Pruébelo y verifique los resultados y la propiedad de la columna de fórmula.
