我不明白為什麼這被標記為垃圾郵件,因為它不是垃圾郵件,也是我要解決的合法問題?
發帖鏈接: (刪除特定條件下冗餘測量的腳本問題)
經過新鮮用戶
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 條回复