如何过滤掉重复的ID只留下最后一个副本?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我希望有一个JSL解决方案,我可以使用' <<选择哪里 '消息到数据表。我有一个数据表,其中每一行代表一个被测试的设备。
有2个数字列为每行指定唯一标识符,即“ID”列和“晶圆号”列。还有另外两列分别指定日期和时间。问题是,有时,设备会在同一数据集中重新测试,这会导致ID和晶圆列的重复值。我希望能够选择所有唯一ID,并且在重复ID的情况下,确保仅选择最后一个值(按行号或时间戳)。
下面是一个示例数据表,显示了我正在寻找的内容。重新测试的两个部分(此处以红色突出显示,相应的重新测试为绿色)将被排除,其他所有部分都将被选中。
任何有关这方面的帮助将不胜感激。
谢谢。

Re:如何过滤掉重复的ID,只留下最后一个副本?嗨nkelleh,
当我说“我会根据ID,WaferNum,日期和时间(按此顺序)排序表”时,我的意思是
Current Data Table() << Sort(By(:ID, :WaferNum, :Date, :Time), Order(Ascending));
我有一个非常强烈的怀疑,就像你一样,一个接一个地运行几个Sort(单列作为每个参数的一个参数)将不会产生与运行单个Sort作为参数的多个列相同的结果。
希望这可以帮助
Re:如何过滤掉重复的ID,只留下最后一个副本?嗨,大家好,
非常感谢你的帮助。
杰夫,你的方法对我来说很有用,除了在进一步检查数据时,结果是有相同的日期和时间值的重复(道歉,这没有在例子中显示)。
最后,我接受了jvillaumie的建议。以下是我的实施。
mydt = Current Data Table();
//Sort columns by ID, wafer num, date in that order
mydt << Sort( Replace Table, By(:ID), Order(Ascending));
mydt << Sort( Replace Table, By(:WaferNum), Order(Ascending));
mydt << Sort( Replace Table, By(:Date), Order(Ascending));
//Select duplicates, i.e. if the next row has the same values for ID and waferNum as the current row, i.e. everything but the last duplicate
mydt << Select Where(
:ID == :ID[Row() + 1] & :WaferNum == :WaferNum[Row() + 1]
);
//Delete Selection
mydt <<DeleteRows;
Re:如何过滤掉重复的ID,只留下最后一个副本?与JMP一样,有很多方法可以实现这一目标。
首先要注意的是 Col Maximum() 功能将取可选 ByVariable 参数。

所以,我认为您可以使用它来构建选择行的条件:
(:Date ==Col Maximum(:Date,:ID,:WaferNum ))&(:Time ==
Col Maximum(:Time,:ID,:WaferNum,:Date ));
-Jeff
Re:如何过滤掉重复的ID,只留下最后一个副本?我会按ID,WaferNum,日期和时间(按此顺序)对表进行排序,以便具有相同ID和WaferNum的行在表中相互跟随,其中较旧的一行(s)在最近的上面。
然后我会创建一个名为“Duplicate”的新列,使用此公式(您应该能够直接复制它并粘贴到JMP中):
If( :ID == :ID[Row() + 1, Empty()] & :WaferNum == :WaferNum[Row() + 1, Empty()],
1,
0
)
它将标记后面跟有另一行的行和具有相同ID的行和WaferNum(即不是最新的复制品)和“1”。
使用SelectWhere Duplicate == 0。
Re:如何过滤掉重复的ID,只留下最后一个副本?看看这些讨论:
Re:语法:如何按ID创建索引列
JMP公式:按组排名
一旦你建立了排名,你可以过滤。
罗恩
Re:如何过滤掉重复的ID,只留下最后一个副本?谢谢你。我确实看到了一个这样的例子,但是我希望有一种方法可以通过在<< Select Where()消息中为数据表指定条件来实现这一点。我觉得它应该是可能的,但不确定你会怎么做。
此外,另一个考虑因素是在测试批次中,日期和时间戳不会更改,这意味着您仍然会有一个重复项,其中唯一的区别在于行号,当限于我指定的列时。无论如何干杯。
Re:如何过滤掉重复的ID,只留下最后一个副本?一个选项可以是为日期和时间创建一个列(连接)。这将允许您使用ID和WaferNum的表摘要并请求日期和时间的最大值。这将为您生成一个新的干净的桌子。
罗恩