我想添加公式来减去第一行和第四行,然后减去第二行和第五行..然后第三行和第六行等等..紧急请帮忙!你好,
:RESULT 是我想要减去第 1 行和第 4 行,然后减去第 2 行和第 5 行等的列,直到所有行完成。
:TEST 当前是一个空列,我想在其中存储 :RESULT 列的结果
我在公式中尝试了以下脚本,但它不起作用? 不知道为什么?
:RESULT << Data Type( Numeric );
:TEST << Data Type( Numeric );
For( i = 1, i <= N Rows(), i++,
Abs( :RESULT[i] - :RESULT[i + 3] )
);
分享和交流结果回复:我想添加公式来减去第一行和第四行,然后减去第二行和第五行..然后第三行和第六行等等..紧急请帮忙!除了使用 Lag 来计算之外,还有特定的行函数:Dif ( JSL 语法参考 > JSL 函数 > 行函数 - Dif(col, n) )。 有时它可能比使用滞后效果更好。
回复:我想添加公式来减去第一行和第四行,然后减去第二行和第五行..然后第三行和第六行等等..紧急请帮忙!此外,要计算不同的行,我推荐函数 lag,它返回相对于当前行的行的值,并且不需要循环。

回复:我想添加公式来减去第一行和第四行,然后减去第二行和第五行..然后第三行和第六行等等..紧急请帮忙!您的公式不应包含 For() 循环,除非您不是将其作为 JMP 公式运行,而是作为开放代码中的 JSL 运行。如果您将代码指定为该列的公式,JMP 会自动循环遍历数据的每一行,并应用该公式。因此,不需要 For() 循环 下面是一个小脚本,它创建一个新列,然后为该列添加一个公式。
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "The New Column",
formula( If( :ATT1 == 0, 0, Abs( :RESULT - :RESULT[Row() + 3] ) ) )
);
如果您有一个空列(例如,称为“mytest”),您可以使用 For Each Row() 函数循环遍历数据表并计算值
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
If( :ATT1 == 0,
:mytest = 0,
:mytest = Abs( :RESULT - :RESULT[Row() + 3] )
)
);
最后,正如您所指出的,您可以使用 For() 循环来循环访问数据表。此代码要求指定要操作的特定行
Names Default To Here( 1 );
dt = Current Data Table();
For( i=1, i<=N Rows(dt), i++,
If( :ATT1[i] == 0,
:mytest[i] = 0,
:mytest[i] = Abs( :RESULT[i] - :RESULT[i + 3] )
)
);
回复:我想添加公式来减去第一行和第四行,然后减去第二行和第五行..然后第三行和第六行等等..紧急请帮忙!弄清楚了:
必须更新行:
Abs( :RESULT[i] - :RESULT[i + 3] )
到
:TEST[i]=Abs( :RESULT[i] - :RESULT[i + 3] )