從 JMP 15 中的數據表中刪除重複項大家好,
我有一個腳本,我想在其中根據指定的列從表中刪除重複的值。 以下代碼用於刪除重複項,並且與 JMP 14 配合良好。
dt << Select duplicate rows( Match( :name ) );
selected = dt << get selected rows;
if (n rows(selected) > 0,
dt << delete rows;
);
然而,在 JMP 15 中,這似乎不起作用。 這些行已被選中,但隨後不會被刪除。 我嘗試在多個位置使用“當前數據表()”,但沒有幫助。 我希望得到有關如何使這部分工作的提示。 我錯過了什麼嗎? 此致。
回复:從 JMP 15 中的數據表中刪除重複項你好拜倫_JMP,
感謝你的回复。 我想我做了表的虛擬連接。 但是,如果選擇了另一個表的引用列中的數據,我仍然無法選擇一個表中的數據。
//dt_run - table with duplicates
//dt_run_exp - table without duplicates
dt_run_exp << Select duplicate rows( Match( dt_run_exp:DMC ) );
del_sel = dt_run_exp << get selected rows;
if(n rows(del_sel) > 0,
dt_run_exp << delete rows;
);
dt_run_exp:DMC << Set Property( "Link ID", 1 );
dt_run:DMC << Set Property( "Link Reference", Reference Table( dt_run_exp ) );
稍後我會嘗試應用其他選項。 歡迎任何進一步的建議提示。 如果需要額外的解釋,請隨時詢問。
感謝大家抽出時間並致以最誠摯的問候。
</CODE></PRE><P> </P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-270688" slang="en-US" mode="NONE">回复:從 JMP 15 中的數據表中刪除重複項</LINGO-SUB><LINGO-BODY id="lingo-body-270688" slang="en-US" mode="NONE"><P>嘗試創建重複數據刪除表,然後由於該表中有唯一的行,因此可以虛擬連接回第一個表。 不是鏈接。 這些表仍將具有相同的行為。 </P>
<P>另一個好處是,去重後的表只需要包含指向它的圖形所需的列,而不是整個表,因此佔用的內存更少。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-270414" slang="en-US" mode="NONE">回复:從 JMP 15 中的數據表中刪除重複項</LINGO-SUB><LINGO-BODY id="lingo-body-270414" slang="en-US" mode="NONE"><P>謝謝您的選擇! 但是,我無法從原始表中刪除重複項,因為它用於創建一種圖形並且需要所有數據(甚至重複項)。 此外,需要創建第二個圖表,並且該圖表基於原始表的子集,因為在這種情況下不需要重複。 由於兩個圖形都顯示在同一窗口上,因此如果選擇了其中一個圖形的數據集,則創建子集期間的“鏈接”選項允許突出顯示兩個圖形中的數據點。 所以,如果有這樣的選擇也是很好的。 我不知道為什麼在使用“鏈接”選項後通過在 JMP 15 中創建子集來刪除重複項不起作用。 可能我還缺少一些東西。 無論如何,我會嘗試其他選擇,如果我之前的描述不夠清楚,我深表歉意。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-270243" slang="en-US" mode="NONE">回复:從 JMP 15 中的數據表中刪除重複項</LINGO-SUB><LINGO-BODY id="lingo-body-270243" slang="en-US" mode="NONE">我看到兩個選項<BR />1. 取消鏈接數據表 => LinkToOriginalDataTable( 0 )。<BR /> 2. 刪除源數據表中的多行。</LINGO-BODY><LINGO-SUB id="lingo-sub-270187" slang="en-US" mode="NONE">回复:從 JMP 15 中的數據表中刪除重複項</LINGO-SUB><LINGO-BODY id="lingo-body-270187" slang="en-US" mode="NONE"><P>謝謝你的建議! 我已經嘗試了所有解決方案,但在所有情況下,如果在從原始表創建子集期間沒有“鏈接”或“LinkToOriginalDataTable(1)”選項,則刪除重複項效果很好。 加入同一個表並刪除重複項效果很好,但隨後不會創建與原始表的鏈接。 也許虛擬加入會有所幫助,我會嘗試.. 我將不勝感激進一步的提示和建議。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-269205" slang="en-US" mode="NONE">回复:從 JMP 15 中的數據表中刪除重複項</LINGO-SUB><LINGO-BODY id="lingo-body-269205" slang="en-US" mode="NONE"><P>這個 JSL 代碼對我來說效果很好:</P><PRE><CODE class=" language-jsl">Names Default To Here(1);
dt = Current Data Table();
// Clear Data Table
dt << Clear Column Selection();
dt << Clear Select();
//Update Formula Columns
dt << Rerun Formulas;
wait(0);
// Delete multiple rows
dt << Select Duplicate Rows();
dt << Delete Rows();
回复:從 JMP 15 中的數據表中刪除重複項這看起來有點麻煩,但效果很好,而且速度也很快。
嘗試將一個表與其自身連接起來,並刪除兩個表的多個表。
匹配兩個表中為重複項創建不完美唯一標識符的列。
這是一個例子
Data Table( "Big Class.jmp" ) << Join(
With( Data Table( "Big Class.jmp" ) ),
By Matching Columns( :name = :name ),
Drop multiples( 1, 1 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
)
這種方法是菜單驅動的。 運行聯接後,只需從已刪除重複數據的表中獲取源腳本即可。
回复:從 JMP 15 中的數據表中刪除重複項感謝您的回复!
是的,這工作得很好,但是,我注意到,需要刪除重複項的數據表是作為某個更大表的子集創建的。 在創建子集期間,使用了附加選項“鏈接”,這很有用,因為腳本會創建多個圖表,並通過選擇與較大表關聯的一個圖表上的數據,同時突出顯示來自子集表的圖表上的數據。 這在 JMP 14 中效果很好。
使用 JMP 15 中的此“鏈接”選項,刪除重複項不起作用。 如果沒有它,它可以按預期工作,但在這種情況下,應用程序的功能明顯受到限制。 是否需要考慮任何其他選項或命令才能使其正常工作?
dt = dt_original << Subset(invisible, linked, Selected Rows( 0 ), selected columns( 1 ), Output Table Name( "Table"));
回复:從 JMP 15 中的數據表中刪除重複項這是代碼正常運行且符合預期的示例
names default to here(1);
dt=open("$SAMPLE_DATA/big class.jmp");
dt << Select duplicate rows( Match( :name ) );
selected = dt << get selected rows;
if (n rows(selected) > 0,
dt << delete rows;
);