獲取唯一的列值並使用它們在不同的表中過濾/清理嗨,例如,使用數組中的鍵來選擇或過濾具有相同鍵但在不同 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 可以完成大部分腳本,因此它們也可以相當容易地編寫腳本。