使用循环创建具有移动平均公式的列我对 jmp 还很陌生,正尝试从电子表格转向大数据集。我正尝试创建一系列列来计算数据列 (xV-C) 的不同移动平均值。我已编写了大部分代码来创建列,但每个创建的列的公式都使用 for 循环变量 (j),而不是每个列的 for 循环值 (10、11、12...)。我想我需要用 Eval 和 Parse 做些什么,但我搞不清楚。这是我目前所拥有的:
对于(j = 10,j <= 12,j ++,
新列(“xF-C MA” || Char(j)、数字、公式(Col 移动平均值(:“xV-C”n,1,j-1)))
(英文):
我相信这对某些人来说很容易!非常感谢您的帮助!
自动化和脚本视窗回复:使用移动平均公式创建列的循环欢迎加入社区
如果在公式中指定变量“J”,并在 JSL 中更改其值,则包含该变量的列将随着“J”值的变化而变化。要纠正此问题,需要评估变量“J”的值,因为公式已指定给 JMP。
Eval(EvalExpr()) 将在 JMP 解析代码之前强制进行评估
尝试一下
For( j = 10, j <= 12, j++,
Eval(
Eval Expr(
New Column( "xF-C MA x " || Char( j ),
Numeric,
Formula( Col Moving Average( :"xV-C"n, 1, Expr( j - 1 ) ) )
)
)
)
);
回复:使用移动平均公式创建列的循环我喜欢使用 Eval+EvalExpr,但还有一个更好的选择 Eval+Substitute,有时更容易阅读(但并非总是如此!)。在你的情况下,它可能看起来像这样
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For(j = 10, j <= 12, j++,
Eval(Substitute(
Expr(
dt << New Column("height " || Char(j), Numeric, Formula(Col Moving Average(:height, 1, _lag_)))
),
Expr(_lag_), j - 1
));
);
与此主题相关的好(旧)帖子使用 Eval Insert、Eval Expr、Parse 和 Substitute 将一个表达式插入另一个表达式
回复:使用移动平均公式创建列的循环太棒了!谢谢!