回复:从列表创建公式列(JSL)这是处理问题的一种方法
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, "," ) || " ) )
);"
)
);
由于公式是开放代码,实际值在生成时不会被计算,因此,它必须是完整的语句才能让 JMP 正确处理它。
回复:从列表创建公式列(JSL)该代码有效,但缺少“Sum()”。
如果您编辑答案,我会接受。 谢谢 :)
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, "," ) || " ) )
);"
)
);
回复:从列表创建公式列(JSL)我尽量避免使用 Eval(Parse()) (即使它通常是最简单的方法)。 通常在这种情况下(现在)我构建表达式并在公式中计算该表达式
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()));
));从列表创建公式列 (JSL)我想创建一个简单的公式来添加来自列表的列。
该列表的元素数量可能有所不同。
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 ) )
);
此解决方案适用于 Col Sum。
https://community.jmp.com/t5/Discussions/Using-list-of-columns-in-formulas/td-p/405133
高级统计建模