我想添加公式來減去第一行和第四行,然後減去第二行和第五行..然後第三行和第六行等等..緊急請幫忙!你好,
: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] )