複数の列間の減算
dt = current data table();
For ( i=0 , i<8, i++,
dt << new column( "RESULT",
Numeric,
"Continuous",
For (x=1, x<50, x++,
Formula(Column(3+i)[x]-Column(2+i)[x]),
));
);
複数の列の間でデータを減算したいのですが、上記のスクリプトを試しましたが、機能しません。もっと効果的な方法はありますか?
期待される結果:
結果 = データ 2 - データ 1
結果1 = データ4 - データ3
結果 2 = データ 6 - データ 5
| アイテム | データ1 | データ2 | データ3 | データ4 | データ5 | データ6 | データ7 | データ8 | データ9 | データ10 | データ11 | データ12 | データ13 | データ14 | データ15 | データ16 |
| A1 | 0.51 | 0.53 | 0.48 | 0.53 | 0.49 | 0.60 | 0.56 | 0.69 | 0.62 | 0.77 | 0.55 | 0.82 | 0.58 | 0.85 | 0.61 | 0.88 |
| A2 | 0.49 | 0.51 | 0.48 | 0.53 | 0.48 | 0.60 | 0.57 | 0.70 | 0.61 | 0.78 | 0.56 | 0.83 | 0.59 | 0.86 | 0.64 | 0.90 |
| A3 | 0.50 | 0.52 | 0.46 | 0.52 | 0.49 | 0.60 | 0.56 | 0.69 | 0.62 | 0.77 | 0.54 | 0.81 | 0.58 | 0.84 | 0.62 | 0.88 |
| A4 | 0.47 | 0.50 | 0.48 | 0.53 | 0.48 | 0.60 | 0.57 | 0.70 | 0.63 | 0.78 | 0.56 | 0.83 | 0.60 | 0.86 | 0.63 | 0.89 |
| A5 | 0.49 | 0.50 | 0.51 | 0.52 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.80 | 0.84 | 0.82 | 0.87 | 0.85 | 0.90 |
| A6 | 0.47 | 0.50 | 0.49 | 0.54 | 0.48 | 0.61 | 0.55 | 0.70 | 0.62 | 0.78 | 0.59 | 0.85 | 0.64 | 0.89 | 0.69 | 0.94 |
| A7 | 0.48 | 0.51 | 0.48 | 0.53 | 0.48 | 0.60 | 0.58 | 0.71 | 0.65 | 0.80 | 0.60 | 0.85 | 0.63 | 0.88 | 0.65 | 0.90 |
| A8 | 0.51 | 0.53 | 0.48 | 0.53 | 0.49 | 0.60 | 0.56 | 0.69 | 0.62 | 0.78 | 0.54 | 0.82 | 0.58 | 0.85 | 0.63 | 0.89 |
| A9 | 0.50 | 0.52 | 0.48 | 0.53 | 0.48 | 0.59 | 0.49 | 0.69 | 0.61 | 0.77 | 0.55 | 0.82 | 0.60 | 0.86 | 0.63 | 0.89 |
| A10 | 0.51 | 0.53 | 0.49 | 0.54 | 0.49 | 0.60 | 0.54 | 0.69 | 0.61 | 0.77 | 0.54 | 0.82 | 0.57 | 0.85 | 0.62 | 0.89 |
| A11 | 0.52 | 0.53 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.81 | 0.86 | 0.84 | 0.90 |
| A12 | 0.51 | 0.52 | 0.53 | 0.54 | 0.61 | 0.62 | 0.68 | 0.70 | 0.76 | 0.79 | 0.80 | 0.84 | 0.83 | 0.88 | 0.86 | 0.92 |
| A13 | 0.48 | 0.51 | 0.48 | 0.53 | 0.48 | 0.60 | 0.57 | 0.70 | 0.64 | 0.79 | 0.56 | 0.83 | 0.59 | 0.86 | 0.64 | 0.90 |
| A14 | 0.47 | 0.50 | 0.47 | 0.53 | 0.49 | 0.60 | 0.57 | 0.70 | 0.63 | 0.78 | 0.56 | 0.83 | 0.59 | 0.86 | 0.63 | 0.90 |
| A15 | 0.47 | 0.50 | 0.47 | 0.52 | 0.47 | 0.59 | 0.56 | 0.69 | 0.63 | 0.78 | 0.56 | 0.83 | 0.59 | 0.86 | 0.64 | 0.90 |
| A16 | 0.51 | 0.53 | 0.48 | 0.53 | 0.48 | 0.60 | 0.57 | 0.70 | 0.62 | 0.77 | 0.54 | 0.82 | 0.58 | 0.85 | 0.62 | 0.89 |
| A17 | 0.48 | 0.51 | 0.46 | 0.51 | 0.47 | 0.59 | 0.56 | 0.69 | 0.62 | 0.77 | 0.55 | 0.82 | 0.60 | 0.86 | 0.63 | 0.89 |
| A18 | 0.48 | 0.51 | 0.47 | 0.52 | 0.48 | 0.60 | 0.56 | 0.70 | 0.61 | 0.77 | 0.56 | 0.83 | 0.61 | 0.87 | 0.64 | 0.90 |
| A19 | 0.52 | 0.54 | 0.49 | 0.54 | 0.49 | 0.60 | 0.57 | 0.70 | 0.63 | 0.78 | 0.56 | 0.83 | 0.60 | 0.86 | 0.64 | 0.90 |
| A20 | 0.51 | 0.52 | 0.52 | 0.53 | 0.58 | 0.60 | 0.67 | 0.70 | 0.75 | 0.79 | 0.80 | 0.84 | 0.83 | 0.88 | 0.86 | 0.91 |
| A21 | 0.53 | 0.53 | 0.53 | 0.54 | 0.60 | 0.61 | 0.69 | 0.71 | 0.75 | 0.79 | 0.80 | 0.84 | 0.82 | 0.87 | 0.85 | 0.90 |
| A22 | 0.53 | 0.53 | 0.53 | 0.54 | 0.60 | 0.61 | 0.68 | 0.70 | 0.75 | 0.79 | 0.80 | 0.84 | 0.82 | 0.87 | 0.85 | 0.91 |
| A23 | 0.48 | 0.51 | 0.48 | 0.53 | 0.50 | 0.61 | 0.56 | 0.69 | 0.62 | 0.77 | 0.53 | 0.82 | 0.59 | 0.86 | 0.62 | 0.89 |
| A24 | 0.48 | 0.51 | 0.47 | 0.53 | 0.48 | 0.60 | 0.59 | 0.72 | 0.65 | 0.80 | 0.60 | 0.85 | 0.63 | 0.88 | 0.64 | 0.90 |
| A25 | 0.48 | 0.51 | 0.47 | 0.52 | 0.48 | 0.60 | 0.57 | 0.70 | 0.62 | 0.77 | 0.54 | 0.82 | 0.59 | 0.86 | 0.62 | 0.89 |
| A26 | 0.49 | 0.51 | 0.47 | 0.52 | 0.49 | 0.60 | 0.57 | 0.70 | 0.64 | 0.79 | 0.57 | 0.84 | 0.59 | 0.86 | 0.64 | 0.90 |
| A27 | 0.51 | 0.52 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.82 | 0.86 | 0.85 | 0.89 |
| A28 | 0.51 | 0.52 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.81 | 0.86 | 0.85 | 0.90 |
| A29 | 0.52 | 0.54 | 0.49 | 0.54 | 0.51 | 0.61 | 0.58 | 0.71 | 0.65 | 0.80 | 0.58 | 0.84 | 0.63 | 0.88 | 0.68 | 0.93 |
| A30 | 0.48 | 0.51 | 0.47 | 0.52 | 0.39 | 0.59 | 0.57 | 0.70 | 0.64 | 0.79 | 0.58 | 0.84 | 0.60 | 0.86 | 0.63 | 0.89 |
| A31 | 0.49 | 0.52 | 0.46 | 0.52 | 0.48 | 0.60 | 0.57 | 0.70 | 0.63 | 0.78 | 0.57 | 0.83 | 0.61 | 0.87 | 0.64 | 0.90 |
| A32 | 0.51 | 0.53 | 0.48 | 0.53 | 0.50 | 0.61 | 0.57 | 0.70 | 0.63 | 0.78 | 0.56 | 0.83 | 0.60 | 0.86 | 0.63 | 0.89 |
| A33 | 0.50 | 0.52 | 0.48 | 0.53 | 0.50 | 0.61 | 0.57 | 0.70 | 0.63 | 0.78 | 0.56 | 0.83 | 0.60 | 0.87 | 0.65 | 0.91 |
| A34 | 0.48 | 0.51 | 0.48 | 0.53 | 0.49 | 0.60 | 0.58 | 0.71 | 0.64 | 0.79 | 0.56 | 0.84 | 0.59 | 0.86 | 0.62 | 0.89 |
| A35 | 0.47 | 0.50 | 0.47 | 0.52 | 0.47 | 0.59 | 0.55 | 0.69 | 0.61 | 0.77 | 0.55 | 0.82 | 0.60 | 0.86 | 0.65 | 0.90 |
| A36 | 0.49 | 0.52 | 0.47 | 0.53 | 0.48 | 0.59 | 0.56 | 0.69 | 0.61 | 0.77 | 0.55 | 0.82 | 0.60 | 0.86 | 0.63 | 0.89 |
| A37 | 0.48 | 0.51 | 0.48 | 0.53 | 0.48 | 0.60 | 0.58 | 0.71 | 0.64 | 0.79 | 0.57 | 0.84 | 0.61 | 0.87 | 0.65 | 0.91 |
| A38 | 0.50 | 0.52 | 0.48 | 0.53 | 0.48 | 0.60 | 0.57 | 0.70 | 0.63 | 0.78 | 0.59 | 0.85 | 0.61 | 0.88 | 0.65 | 0.91 |
| A39 | 0.53 | 0.53 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.83 | 0.87 | 0.85 | 0.90 |
| A40 | 0.53 | 0.53 | 0.53 | 0.54 | 0.60 | 0.61 | 0.68 | 0.70 | 0.75 | 0.79 | 0.80 | 0.84 | 0.83 | 0.87 | 0.85 | 0.91 |
| A41 | 0.51 | 0.53 | 0.48 | 0.53 | 0.49 | 0.60 | 0.54 | 0.69 | 0.61 | 0.77 | 0.55 | 0.82 | 0.60 | 0.86 | 0.64 | 0.90 |
| A42 | 0.59 | 0.50 | 0.47 | 0.52 | 0.49 | 0.60 | 0.57 | 0.70 | 0.64 | 0.79 | 0.56 | 0.83 | 0.61 | 0.87 | 0.64 | 0.90 |
| A43 | 0.51 | 0.52 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.82 | 0.86 | 0.85 | 0.90 |
| A44 | 0.51 | 0.52 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.81 | 0.85 | 0.84 | 0.89 |
| A45 | 0.51 | 0.52 | 0.53 | 0.54 | 0.59 | 0.60 | 0.69 | 0.71 | 0.76 | 0.80 | 0.81 | 0.85 | 0.83 | 0.88 | 0.86 | 0.92 |
| A46 | 0.49 | 0.51 | 0.48 | 0.53 | 0.48 | 0.60 | 0.57 | 0.70 | 0.62 | 0.78 | 0.56 | 0.83 | 0.61 | 0.87 | 0.66 | 0.91 |
| A47 | 0.49 | 0.52 | 0.48 | 0.53 | 0.47 | 0.59 | 0.54 | 0.69 | 0.61 | 0.76 | 0.52 | 0.81 | 0.56 | 0.84 | 0.61 | 0.88 |
| A48 | 0.47 | 0.50 | 0.47 | 0.52 | 0.47 | 0.59 | 0.57 | 0.70 | 0.63 | 0.78 | 0.56 | 0.83 | 0.59 | 0.86 | 0.63 | 0.90 |
| A49 | 0.50 | 0.51 | 0.52 | 0.53 | 0.59 | 0.60 | 0.68 | 0.70 | 0.74 | 0.78 | 0.79 | 0.83 | 0.82 | 0.87 | 0.85 | 0.90 |
自動化とスクリプト作成基本的なデータ分析とモデリングRe: 複数の列間の減算こんにちは@kuanaunwei さん
私にとって、正しいスクリプトを学ぶ効果的な方法は、「ワークフロー」を使用することです (私は JMP 17 を使用しています)。
以下は私がそれを行う方法です。
ボタンクリックを使用して手動で結果を取得し、「ワークフロー」でコードを確認します。私のスクリプトに追加してください

上記の JSL スクリプトからは、単純な数式列が必要なのか、それとも条件 (IF/Else) を含む数式列が必要なのかがわかりません。
Re: 複数の列間の減算これにより、追加のアイデアが得られるかもしれません
Names Default To Here(1);
dt = Open("$DOWNLOADS/724991.jmp");
cont_cols = dt << Get Column Names(Continuous, "String");
first_cols = cont_cols[2::N Items(cont_cols)::2];
second_cols = cont_cols[1::N Items(cont_cols)::2];
If(N Items(first_cols) != N Items(second_cols),
Throw("column mismatch");
);
For Each({{col1, col2}}, Across(first_cols, second_cols),
Eval(EvalExpr(
new_col = dt << New Column("Result", Numeric, Continuous, Formula(
Expr(Name Expr(AsColumn(dt, col1))) - Expr(Name Expr(AsColumn(dt, col2)))
));
));
dt << Run Formulas;
new_col << Suppress Eval(1);
);
結果だけを気にする場合は、データをスタックし、結果をスタックされたテーブルに計算し、それを分割し (結果の列に適切な名前を付けるために新しい列を追加する必要がある場合があります)、結合し直すという他のオプションもあります。



JMP はある種のスクリプトを作成できます。

Re: 複数の列間の減算列名が異なり、データのサイズも異なります。そのため、ワークフローは私のケースでは最適なソリューションではない可能性があります。ご提案ありがとうございます。:)
Re: 複数の列間の減算返事が遅くなって申し訳ありません。何らかの理由でJMPアカウントにログインできませんでした。また、スクリプト側でのアイデアもありがとうございます。助かりました。