Re: Crear una columna de fórmula a partir de una lista (JSL)Aquí hay una forma de manejar el problema.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Bands Data.JMP" );
theList = {"varnish pct", "ink pct", "solvent pct"};
col_list = {"varnish pct", "ink pct", "solvent pct"};
Eval(
Parse(
"dt << New Column( \!"mysum\!",
Formula( " ||
concat items( theList, "," ) || " ) )
);"
)
);
Debido a que las fórmulas son código abierto, el real no se evalúa a medida que se genera. Por lo tanto, debe ser una declaración completa para que JMP lo procese correctamente.
Re: Crear una columna de fórmula a partir de una lista (JSL)El código funciona, pero faltaba "Sum()".
Si editas la respuesta, la aceptaré. Gracias 
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Bands Data.JMP" );
col_list = {"varnish pct", "ink pct", "solvent pct"};
Eval(
Parse(
"dt << New Column( \!"mysum\!",
Formula( Sum(" ||
concat items( col_list, "," ) || " ) )
);"
)
);
Re: Crear una columna de fórmula a partir de una lista (JSL)Intento evitar usar Eval(Parse()) siempre que puedo (aunque a menudo es el método más fácil). Por lo general, en casos como este (ahora) construyo la expresión y evalúo esa expresión dentro de la fórmula
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Bands Data.JMP" );
col_list = {"varnish pct", "ink pct", "solvent pct"};
// 1
sum_expr = Expr(Sum());
For Each({item}, col_list,
Insert Into(sum_expr, Name Expr(As Column(dt, item)));
);
//show(Name Expr(sum_expr));
Eval(EvalExpr(
dt << New Column( "mysum",
Formula(Expr(Name Expr(sum_expr)))
)
));
// 2
col_listing = Transform Each({item}, col_list,
Name Expr(As Column(dt, item));
);
Eval(Substitute(
Expr(dt << New Column( "mysum", Formula(_sums_))),
Expr(_sums_), Substitute(col_listing, Expr(List()), Expr(Sum()));
));Creación de una columna de fórmula a partir de una lista (JSL)Quiero crear una fórmula simple para agregar columnas que provienen de una lista.
La lista puede variar en el número de elementos.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Bands Data.JMP" );
col_list = {"varnish pct", "ink pct", "solvent pct" };
<BR />// expected formula (hard coded)
dt << New Column( "mysum",
Formula( Sum( :varnish pct, :ink pct, :solvent pct ) )
);
Esta solución funciona para un Col Sum.
https://community.jmp.com/t5/Discussions/Using-list-of-columns-in-formulas/td-p/405133
Modelado Estadístico Avanzado