回复:從列表創建公式列(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
高級統計建模