1行目と4行目を減算し、次に2行目と5行目を減算し、次に3行目と6行目を減算するという数式を追加したいのですが、至急助けてください。やあ、
: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] )
);
スクリプト作成Re: 1 行目と 4 行目、次に 2 行目と 5 行目、次に 3 行目と 6 行目などを減算する数式を追加したいです。至急助けてください。Lag を使用して計算するほかに、このための特定の行関数もあります: Dif ( JSL 構文リファレンス > JSL 関数 > 行関数 - Dif(col, n) )。 場合によっては、ラグを使用するよりもうまく機能する場合があります。
Re: 1 行目と 4 行目、次に 2 行目と 5 行目、次に 3 行目と 6 行目などを減算する数式を追加したいです。至急助けてください。さらに、異なる行を使用して計算するには、現在の行を基準とした行の値を返す関数 lag をお勧めします。ループは必要ありません。

Re: 1 行目と 4 行目、次に 2 行目と 5 行目、次に 3 行目と 6 行目などを減算する数式を追加したいです。至急助けてください。これを JMP 式としてではなく、オープン コードの JSL として実行する場合を除き、式には For() ループを含めないでください。コードを列の式として指定すると、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] )
)
);
Re: 1 行目と 4 行目、次に 2 行目と 5 行目、次に 3 行目と 6 行目などを減算する数式を追加したいです。至急助けてください。理解した:
行を更新する必要がありました:
Abs( :RESULT[i] - :RESULT[i + 3] )
に
:TEST[i]=Abs( :RESULT[i] - :RESULT[i + 3] )