获取唯一的列值并使用它们在不同的表中过滤/清理嗨,例如,使用数组中的键来选择或过滤具有相同键但在不同 JMP 表中的行的方法是什么。 我有两张桌子。 其中之一将化学测试的样品 ID 映射到不同的因素设置(温度、时间、研究编号等)。 我成功地获取了数组中的样本 ID。 (对不起,我完全是新手。)
smplID = Associative array(:sampleid) << Get Keys;
现在我想使用这些键来选择第二个表中的行(我的响应所在),反转行选择并删除行。这个参考到目前为止,我一无所获。 也许下面的解决方案,如此处所述,更适合开始?
Summarize(dt, smpleID = by(:sampleid));
或者可能这种方法更可取?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
无论如何,我真正想知道的是,在我进一步进行数据分析之前,我可以如何使用这些方法中的任何一种来有效地清理数据表中不需要的行。 我想我需要学习如何循环。
是的,我正在尝试尽可能通读脚本指南。 我只是无法优先考虑它。
脚本编写回复:获取唯一的列值并使用它们在不同的表中过滤/清理要获得唯一值,所有这些都是有效的方法,它们的速度将取决于您拥有的数据量。 一个需要注意的想法是,如果您想获取唯一的数字值并使用 Summarize,则必须将它们转换回数字(Summarize 将它们作为字符串返回)。
获取唯一值的一些不同方法:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_uniq = Associative Array(dt:age) << get keys;
Summarize(dt, summarize_uniq = by(:age));
dt_summary = dt << Summary(Group(:age), Freq("None"), Weight("None"), private);
summary_uniq = Column(dt_summary, 1) << get as matrix;
Close(dt_summary, no save);
Show(aa_uniq, summarize_uniq, summary_uniq);要从数据表中选择值,您可以使用“包含”和“选择位置”。 可能不需要反转行选择,因为您可以使用! (或 Not()) 来否定你从函数中得到的结果。 等待只是为了演示:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
names_of_interest = {"KATIE", "LILLIE", "JOHN"};
wait(2);
dt << Select Where(Contains(names_of_interest, :name)) << Invert Row Selection << Hide and Exclude(1);// << clear select;
//Remove selections
wait(2);
dt << Clear Row States;
wait(2);
dt << Select Where(!Contains(names_of_interest, :name)) << Hide and Exclude(1);// << clear select;此外,如果您有大量数据,这可能不是最有效的方法,但很可能是最简单的方法,我会从它开始。
回复:获取唯一的列值并使用它们在不同的表中过滤/清理谢谢,这对我帮助很大! 我不确定“大量数据”的真正含义。 我打开的第一个表,今天包含大约 400 行,但随着我们组织中实验室信息管理系统 (LIMS) 的持续实施,这个数字肯定会增加。 我猜随着时间的推移会有数千行,甚至可能多达数万行。 我正在“清理”的第二个表,对我来说,不相关的样本 ID 已经有大约 50 000 行。
到目前为止,在实施了您的解决方案后,我正在处理一系列示例 ID。 (虽然我觉得我的技能非常有限,但在找到解决方案时,脚本仍然感觉非常有价值,令人满意,即使它是从社区“撕”出来的。 所以再次非常感谢你。)
回复:获取唯一的列值并使用它们在不同的表中进行过滤/清理对于这么多的行,这些方法会很快!
我想到了另一种解决方案,您可以首先创建摘要表,然后将其加入到要从中删除找到的值的表中。
以 JMPs Cars.jmp 和 Cars 1993.jmp 样本数据为例。 Cars 1993 将是我们将使用 Model 列过滤 Cars 的一种数据。
1. 从 Cars 1993 创建汇总表,模型为组
2. 使用以下设置将该新汇总表加入 Cars 表:

3. 从新的匹配标志列中,您可以看到两个值:Both 和 Main。 两者都意味着可以从两个数据集中找到模型
我认为您可以直接使用 Cars 1993 执行此操作,但您必须小心重复(使用 Table 放置倍数可能会解决这个问题,不确定)。 同样在这种情况下,您需要选择要保留的列,因为会有重复(至少在这个例子中)。

由于 JMP 可以完成大部分脚本,因此它们也可以相当容易地编写脚本。