我不明白为什么这被标记为垃圾邮件,因为它不是垃圾邮件,也是我要解决的合法问题?
发帖链接: (删除特定条件下冗余测量的脚本问题)
经过新鲜用户
https://community.jmp.com/t5/Discussions/Problem-with-script-to-delete-redundant-measurements-specific-to/mp/554948#M76947
我有一个数据表,它由多行单独的测量值组成,我在执行表拆分功能之前要对其进行修剪,但是我想删除一些冗余测量值,但当前代码我有问题我正在使用的速度非常慢,而且对于我需要的东西可能效率低下。 背景信息:每一行都是对连续执行的一种材料进行单独自动测量的结果,并生成包含以下列的报告: 分配给每个单独材料的唯一部件 ID [ PartID ] 与用于创建单个材料的原材料 [ LotID ] 执行测量的实际测量值 [ Value ] 根据测量值分配的测量结果(通过/失败/返工) [ Result ] 测量时间戳 [ Date_Created ] 我的设备每份材料产生数十行测量值,并在每个报告中处理数千份材料 - 然后将这些报告作为我的原始数据表输入 JMP。每个报告还包含多个批次,因此数据表有多个对“PartID = 1”的引用,因为每个批次都有一个从 1 开始的序列号,因此我需要同时使用 PartID 和 LotID 来引用给定的材料。在结果为“返工”的情况下,测量设备停止对该单件材料的任何进一步测量,重新定位该材料,并将其返回到生产线的起点,重新测量所有先前的测试材料,但仍保留与该材料相关联的唯一零件 ID。 期望的结果:我想使用脚本来遍历数据表并消除直到(包括)返工结果的所有测量,因为在返工后,所有测量都会重复,返工会影响测量值。为此,我目前正在使用 JSL 脚本循环遍历每一行并执行以下操作:确定结果是否为“返工”;如果是,则执行以下操作: 将给定材料的 PartID 标识为“xPartID” 将给定材料的 LotID 标识为“xLot” 将给定测量的 Date_Created 标识为“xDate” 选择并删除所有行(PartID = xPartID) and (LotID = xLot) and (Date_Created <= xDate) 如果结果不是“返工”,则退出循环,无需继续。 我一直在极度减速,基本上代码会导致程序崩溃。如果我逐步运行它,它似乎可以工作,但如果让它运行它最终会死掉。 这是实际代码: //将两个潜在的“Rework”结果重新编码为共享值“aRework”;将字母“a”放在它前面,这样如果我按列升序排序,那么所有这些值都在列表的开头,希望能够更容易和更快地处理它们。 dt <<重新编码列(dt:结果,{映射值(_rcOrig,{“FailOnHighRework”,“aRework”,“FailOnLowRework”,“aRework”},不匹配(_rcNow))},更新属性(1),目标列( :结果 ) ); //使用recode后的result列对表进行排序,所以所有rework行都在表的开头 SortColumn = "result"; dt << Sort( By( :result ), Replace Table, Order( Ascending ), Suppress formula evaluation( 1 ) ); //现在运行逐行脚本 dt << begin data update;对于每一行(如果(:result == “aRework”,xRow = Row(); xPartID=:PartID[Row()]; xLot=:lot[Row()]; xDate=:date_created[Row()]; dt <
此消息有 0 条回复