我正在绘制 CD 与深度图,示例中共有 8 组(Aa、Ab、Ba、Bb……)。对于每个测试 A~D,有 2 个不同的“位置”a 和 b。
我想具体挑选两组并创建一个增量图;例如,如果我选择 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 中很容易实现自动化。
