从 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;
);