使用时间戳从表中删除重复数据我很抱歉,我知道这个问题在这个论坛上已经被问过很多次了,但我一直无法找到解决我的问题的方法。
我有一个很大的数据集 ~24,000 行测试数据。 我们的流程是在 5 个芯片上运行 5 个步骤验证,一旦获得结果,我们就开始测试,这最终意味着我将在这 5 个站点上获得重复数据。这 5 个步骤的验证会验证接触点,有时会导致我们拆掉测试设备并重新安装。 我希望从第一次测试(达阵)中排除重复数据。 我们的测试带有时间戳,因此很容易区分新旧测试。 如果有人对我的问题有很好的解决方案,我会洗耳恭听。 附件是我试图删除重复项的数据表。
谢谢你,
英格
回复:使用时间戳从表中删除重复数据下午好先生特克斯尼尔森,
我想我可以在这里与您联系,而不是创建一个新线程。 我需要一些帮助来计算产量并使用您提供的删除重复数据的脚本中的输出表生成选择列表/晶圆图。 我浏览了社区论坛,据我所知,发现了一篇 2016 年开始的帖子。 所有输出变量等都有些令人困惑且难以理解。 我附上了最终输出的表格。
我尝试过使用拆分、堆栈、制表、摘要,但似乎无法找到解决方案。 实际上,我有两个相同的独立表,除了名为 :trmode 的列之外。 正如我提到的,我正在尝试运行良率分析,然后创建一个选择列表和晶圆图。 我实际上有另一个 test_output 表,我目前正在使用你们好先生们提供给我的工具来处理它。
dummy_data_tx:test_output 每个通道的规格限制为(LSL = 20 和 USL = 40)
dummy_data_rx:每个通道的 test_output 的规格限制为(LSL = 15 和 USL = 35)
dummy_data_dc:test_output 的规格限制为-(实际上在使用此测试删除重复数据时存在问题..
set_id (7000) - VDD_Dig(LSL = 0.03 且 USL = 0.06)
set_id (7100) - VDD_Dig(LSL = 0.03 且 USL = 0.06)
set_id (7200) - VDD_Dig(LSL = 0.03 且 USL = 0.06)
非常感谢您再次给我的任何帮助。
set_id (7000) - 模拟(LSL = 0.03 且 USL = 0.07)
set_id (7100) - VDD_Dig(LSL = 0.2 且 USL = 1)
set_id (7200) - VDD_Dig(LSL = 0.15 且 USL = 0.35)
回复:使用时间戳从表中删除重复数据谢谢特克斯尼尔森,
今天早上我打算尝试一下,并将其合并到我的服务器拉脚本/表操作中。
再次非常感谢..
回复:使用时间戳从表中删除重复数据我重新思考了这个问题,并提出了一个完整的方法论。该代码适用于晶圆
Names Default To Here( 1 );
dt = Current Data Table();
// Summarize the data to find the maximum :ts for each wafer/rowcol
dtSum = dt << Summary(
Group( :wafer_number, :RowCol ),
Max( :ts ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
link to original table( 0 )
);
// Join the data together matching only where the max :ts for each
// wafer/rowcol
dtFinal = dt << Join(
With( dtSum ),
Merge Same Name Columns,
By Matching Columns( :wafer_number = :wafer_number, :RowCol = :RowCol, :ts = :ts ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve main table order( 1 )
);
dtSum << delete columns("N Rows");
Close( dtSum, nosave );
// Delete all rows that do not match the maximum value of :ts within
// each Wafer, RowCol
dtFinal << select where( Not( :Match Flag == 3 ) );
dtFinal << delete rows;
// Get rid of the Match Flag column which is an artifact of the Join
dtFinal << delete columns("Match Flag");回复:使用时间戳从表中删除重复数据特克斯尼尔森,
关于删除重复数据的另一个问题.. 我忘了提及,我进行了一次包含所有晶圆的全面数据拉取,以便我进行总体分布和单向 t 检验分析。
我附上的数据表只是一个晶圆的测试数据。我应该把wafer_number放在脚本的哪个位置? 我会将其包含在 summarise() 部分中吗?
我附上了新的数据表以供参考。
我不得不删除另一个,因为有人向我指出我的 sql 脚本是从我们的服务器中提取的......
回复:使用时间戳从表中删除重复数据哎呀......那应该是 1 而不是 9回复:使用时间戳从表中删除重复数据我好奇! 我是一名工业工程师,编码对我来说非常困难。 从一开始,If() 和 For() 就让我陷入了循环(请原谅双关语)。 你是如何确定 9 这个数字的?
再次感谢回复:使用时间戳从表中删除重复数据太感谢了! 我对你们这些绅士在脚本编写方面的技巧感到非常惊讶。 在这里,我想这将是一个复杂的脚本来完成这个任务,并且你设法在 10 行内完成它。
你和先生摩根0非常有帮助..
旁注:我的公司在周期中有一个采购订单为我们提供了 JMP 14,这让我非常兴奋。
再次感谢先生。特克斯尼尔森..
Yng(不再那么Yng了)
回复:使用时间戳从表中删除重复数据我认为这会成功......它只是找到给定 RowCol 的时间戳(ts)小于该 RowCol 最大时间戳的所有行,然后删除它们。处理需要几分钟,但似乎有效
Names Default To Here( 1 );
dt = Current Data Table();
// remove formula leaving static data
try(dt:RowCol << delete formula);
Summarize( dt, byGroup = by( "RowCol" ) );
For( i = 1, i <= N Items( byGroup ), i++,
theRows = dt << get rows where( dt:RowCol == byGroup[i] & :ts < Col Max( dt:ts, :RowCol ) );
If( N Rows( theRows ) > 1,
dt << delete rows( theRows )
);
);
回复:使用时间戳从表中删除重复数据对于那个很抱歉.. 我删除了不必要的列并重新附加。
test_output 是我需要的数据。 RowCol 是我正在测试的设备的标识符。
我附上 RowCol {r2c3sr1sc1, r2c8sr1sc1, r4c5sr1sc1, r7c3sr1sc1, r7c8sr1sc1} 的汇总表有重复的数据。 我需要从数据集中删除这些设备的初始测试。 他们可能会有最早的时间戳。 这 5 个设备在每个设置中都会使用,这需要我从每个 test_output 中删除。
回复:使用时间戳从表中删除重复数据我无法从您附加的数据表中识别包含您想要删除的测试 1 数据的行。您能否提供代表目标数据的 1 或 2 个案例的行号?