我正在繪製 CD 與深度圖,範例中共有 8 組(Aa、Ab、Ba、Bb…)。
我想特別選擇 2 組並建立一個增量圖;例如,如果我選擇 Aa 和 Ba,則在每個深度處減去 CD 值,並且應該產生 CD 與深度圖。
我可以在 JMP 上做這個嗎?我嘗試使用 xlookup 函數在 Excel 中執行此操作,但由於資料量龐大(30000+ 行),所以速度太慢了。我不確定這是否可以在 JMP 上實現。
範例資料集

範例 CD 與深度圖;

透過腳本,這肯定可以完成,甚至可能無需腳本,至少作為工作流程。您能提供範例資料集嗎?另外,所選測試的位置總是相同的嗎?
當然,這是範例資料檔。
我希望獲得兩對之間的增量值,因此是的,我總是選擇 2 進行比較。
位置可能不一樣,在真實資料集中我有一些具有更多位置的樣本。我還需要將樣本與樣本、地點與地點進行比較。例如,樣本 Aa 到樣本 Cb
以下是
如果使用者選擇後建立新的資料表可以嗎?我的基本想法是使用腳本:
- 為資料添加排序列
- 建立 UI,讓使用者可以從列錶框中選擇要比較的組合
- 使用者按下“確定”,系統將建立包含這兩個組合的資料的新表
- 將計算差額
- 數據視覺化
我想到另一個選擇是拆分資料並預先計算所有差異到列中。然後您可以使用圖形產生器中的列切換器來變更要比較的內容。
我想看看是否可以快速改變條件進行比較。看來事情沒那麼簡單。
我認為,由於數據集太多,計算所有差異是行不通的。
謝謝你的幫助,讓我再想想。
我只想到了腳本選項(除了那種分裂之外)。我認為 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 中很容易實現自動化。
