在公式中使用列列表当我尝试直接使用从列对话框返回的列列表(例如 {:sex, :age: name})时,我遇到了“问题”。 当我尝试直接在 Col 公式(Col Mean、Col Sum...)和 byVars 中使用该列表时,公式将无法正常工作。 将列表与例如 Sum() 公式一起使用效果很好。 这是预期的行为吗?是否有人有比我下面的示例更干净的方法从列列表中构建列总和?
下面是包含 Sum() 和 ColSum() 公式的示例脚本。 我尝试使用几种不同的方法来构建 ColSum() 公式,但设法让它们仅与带有表达式的 Insert Into 和 EvalParse 一起使用(由于调试麻烦,我将尽力避免这种情况)。
例子:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Sum", Numeric, "Continuous", Format("Best", 12), Formula(Sum(:height, :weight)));
listOfCols = {:height, :weight}; //list works here
dt << New Column("SumList", <<FORMULA></FORMULA>
高级统计建模自动化和脚本编写数据混合和清理实验设计质量和工艺工程回复:在公式中使用列列表JMP Discovery 峰会与专家见面会再次带来! 跳到自动化和客户分组讨论室的脚本编写@EvanMcCorkle有比我的循环插入和评估解析更干净的解决方案; s用 ColSum 替换 listOfCols 周围的列表:
listOfCols = {:height, :age, :sex}; //won't work here
f = Substitute(listOfCols, Expr(list), Expr(ColSum));
Show(f); //f = ColSum(:height, :age, :sex);不确定 Col Sum() 函数是否适用于列列表,但这个解决方案干净简单。
回复:在公式中使用列列表你好@jthi ,
不确定这是否是有意为之,但它肯定与列表括号、{} 和列表中的项目数有关。 我可以重现您所描述的相同问题。
我认为你的插入解决方案是最好的选择。 解析可能会变得非常复杂和困难。 我认为您对“插入”有一个很好的解决方案,并且最好坚持使用它,以解决列表括号问题。
DS