この例では、合計 8 セット (Aa、Ab、Ba、Bb....) の CD 対深度プロットをプロットしています。各テスト A ~ D には、2 つの異なる「場所」a と b があります。
特に 2 セットを選択してデルタ プロットを作成したいと思います。たとえば、Aa と Ba を選択した場合、各深度で CD 値が減算され、CD 対深度プロットが生成されます。
これは JMP で実行できるものなのでしょうか? xlookup 関数を使用して Excel で実行しようとしましたが、データ量が非常に多い (30000 行以上) ため、非常に遅くなります。これは JMP で実行できるかどうかわかりません。
サンプルデータセット

CD 対深度プロットの例。

スクリプトを使用すれば、これは間違いなく実行できます。また、少なくともワークフローとしてはスクリプトを使用せずに実行できるかもしれません。サンプル データセットを提供できますか。また、同時に選択できるのは 2 つのペアだけですか。また、選択したテストの場所は常に同じですか。
はい、ここにサンプルデータファイルがあります。
私は 2 つのペア間のデルタ値を取得しようとしているので、比較には常に 2 つを選択します。
場所は同じではないかもしれません。実際のデータセットには、複数の場所を持つサンプルがいくつかあります。また、サンプル同士、場所同士を比較する必要もあります。たとえば、サンプルAaとサンプルCbを比較します。
ここは
ユーザーの選択後に新しいデータ テーブルを作成しても問題ありませんか? 私の基本的なアイデアはスクリプトを使用することです:
- データに順序列を追加する
- ユーザーがリストボックスから比較する組み合わせを選択できるUIを作成します。
- ユーザーがOKを押すと、その2つの組み合わせのデータを含む新しいテーブルが作成されます。
- 差額が計算されます
- データを視覚化する
他に思いつく選択肢としては、データを分割し、すべての差異を列に事前計算することです。その後、グラフ ビルダーの列スイッチャーを使用して、比較する列を変更できます。
比較のために条件をすぐに変更できるかどうかを確認したかったのですが、それほど簡単ではないようです。
データセットが非常に多いため、すべての差異を計算するのはうまくいかないと思います。
助言ありがとうございます。もう少し考えさせてください。
スクリプト オプションだけが思い浮かびます (分割以外)。JMP テーブルはスプレッドシートというよりもデータベース テーブルに似ていると考えているため、計算は (通常は) 行レベルで集計として行われます。テスト数が各「ペア」で常に同じである場合は、オプションの選択を容易にするために、いくつかの数式列とグローバル データ フィルターを使用してこれを行うことができます。
スクリプトを使用すると、次のようなものを作成できます (ただし、いくつかの健全性チェックが欠落しています)
Names Default To Here(1);
dt = Current Data Table();
dt << New Column("Group", Character, Nominal, Formula(
"Test: " || :Test || " Location: " || :Location
));
Summarize(dt, groups = By(:Group));
dt_temp = New Table("TEMPTABLE",
Add Rows(5), // same as your group size
Compress File When Saved(1),
New Column("Depth",
Numeric,
"Continuous",
Values([0, 20, 40, 60, 80])
),
New Column("CD First",
Numeric,
"Continuous"
),
New Column("CD Second",
Numeric,
"Continuous"
),
New Column("CD diff",
Numeric,
"Continuous"
),
Invisible
);
update_expr = Expr(
Try(
first_group = (lb_first << get selected)[1];
second_group = (lb_second << get selected)[1];
first_cd = dt[dt << Get Rows Where(:Group == first_group), "CD (nm)"];
second_cd = dt[dt << Get Rows Where(:Group == second_group), "CD (nm)"];
dt_temp[0, "CD First"] = first_cd;
dt_temp[0, "CD Second"] = second_cd;
dt_temp[0, "CD Diff"] = Abs(second_cd - first_cd);
,
dt_temp[0, "CD First"] = [., . ,., ., .];
dt_temp[0, "CD Second"] = [., . ,., ., .];
dt_temp[0, "CD Diff"] = [., . ,., ., .];
);
);
nw = New Window("Demo",
H List Box(
Panel Box("Pick First Group",
lb_first = List Box(groups)
),
Panel Box("Pick Second Group",
lb_second = List Box(groups)
),
Data Table Box(dt_temp),
gb = dt_temp << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:CD diff), Y(:Depth)),
Elements(Points(X, Y, Legend(11)), Line(X, Y, Legend(13)))
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("Cancel")
)
)
)
);
lb_first << Set Max Selected(1);
lb_second << Set Max Selected(1);
lb_first << Set Script(update_expr);
lb_second << Set Script(update_expr);
Eval(EvalExpr(
nw << On Close(
Close(dt_temp, no save);
)
));

テーブルを複製して、「複製された」列で自己結合を行い、深度で元のテーブルに結合し、自己結合を削除し、グループ化セレクターを作成し、差異の式を作成してプロットを作成することもできると思います。

これは JMP で簡単に自動化できます。
