有条件选择哪里<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有下面的 JSL 代码来选择每个“标签”少于 25 行的数据并对其进行子集化,保存子集,并从主工作数据集中删除子集。 在标签少于 25 行的情况下,这工作得很好,但我需要它足够强大,并且在没有少于 25 行的标签的情况下工作 - 在这种情况下,它应该忽略第 4-6 行并继续到第 7 行进行保存具有新名称的主要工作数据集。 我怎样才能实现这个目标?
非常感谢
1 打开(“data.jmp”);
2 dt=当前数据表() << 摘要( Group( :tag ) );
3 数据表( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), 输出表名称("summary_of_small_n"));
4 数据表( "data" ) << 子集(( 选定行 ), 输出表名称("sub_small_n"));
5 数据表( "sub_small_n" ) << save("sub_small_n.jmp");
6 数据表( "summary_of_small_n" ) << save("summary_of_small_n.jmp");
7 数据表( "data" ) << 删除行 << save("data_less_small_n.jmp");
回复:有条件选择哪里经过一番摆弄后,下面的内容似乎对我有用。 谢谢您的帮助。
打开(“数据.jmp”);
dt = 当前数据表() << 摘要( Group( :tag ) );
数据表( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), 输出表名称("summary_of_small_n_tag"));
数据表( "summary_of_small_n_tag" ) << save("summary_of_small_n_tag.jmp");
num_selected = nrows(dt << 获取选定行);
if(num_selected(dt > 0),
// 如果条件满足,则执行此操作...
数据表( "data" ) << 子集(( 选定行 ), 输出表名称("sub_small_n"));
数据表( "sub_small_n" ) << save("sub_small_n.jmp");
数据表( "data" ) << 删除行 << save("data_less_small_n.jmp");
,
// 否则执行此操作...
数据表(“数据”)<<保存(“ data_less_small_n.jmp ”);
);
回复:有条件选择哪里@rijking
仅基于(a)点 - 尝试反向选择是否可行? 你尝试过吗?如果它不起作用 - 您能否从示例数据库中建议一个适合您问题的示例数据表,以便我可以尝试重现该问题以尝试提供帮助?
最好的
乌代
回复:有条件选择哪里伊恩,谢谢。 这并不完全有效:
a) 我需要参考数量已选择行(而不是我理解的 NRow 所处理的总行数) - 因为 dt2 总结了所有标签的总行数,而不仅仅是那些 < 25 的行数。
b)如果引用 dt2 中的选定行,我认为这需要 > 0 而不是 > 24 - 因为 dt2 总结了所有标签的总行数,所以我对所有选定的行感兴趣(即使只有一个) ;这将总结出现在底层 dt 中少于 25 行的标签)。
任何其他建议将不胜感激。 谢谢。
Ian@JMP wrote:You need to use the 'NRow()' function in combination with an 'If()' expression. Something like:Open( "data.jmp" );dt = current data table() << Summary( Group( :tag ) );dt2 = Data Table( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), Output Table Name("summary_of_small_n"));if( NRow(dt2 > 24, // If the condition is satisfied, do this . . . Data Table( "data" ) << Subset(( Selected Rows ), Output Table Name("sub_small_n")); Data Table( "sub_small_n" ) << save("sub_small_n.jmp"); Data Table( "summary_of_small_n" ) << save("summary_of_small_n.jmp") , // Else do this . . . Data Table( "data" ) << delete rows << save("data_less_small_n.jmp"); );
回复:有条件选择哪里您需要将“NRow()”函数与“If()”表达式结合使用。 就像是:
打开( “数据.jmp” ) ;
dt =当前数据表() <<概括(团体( :标签) ) ;
dt2 =数据表( “数据来源(标签)” ) <<选择地点( : N 行< 25 ) <<种类(经过( : N 行) ,命令(上升) ,输出表名称( “小n的摘要” )) ;
如果(
行( dt2 > 24 ,
// 如果满足条件,则执行此操作。 。 。
数据表( “数据” ) <<子集((选定的行) ,输出表名称( “sub_small_n” )) ;
数据表( “sub_small_n” ) <<节省( “sub_small_n.jmp” ) ;
数据表( “小n的摘要” ) <<节省( “summary_of_small_n.jmp” )
,
// 否则执行此操作。 。 。
数据表( “数据” ) <<删除行<<节省( “数据_less_small_n.jmp” ) ;
) ;