jsl 创建列中最常见值的表子集<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我是一名新用户,仍在学习基本原理,通常我可以通过搜索找到我需要的答案,但这个答案却让我困惑。
我正在寻找一个脚本来创建所选列的前 10 个最常出现的值的表子集。 我当前的解决方法是创建一个汇总表,按降序值对汇总表进行排序,选择前十行,然后返回到第一个表并创建所选行的子集。 我确信有一个优雅的解决方案,但我就是找不到它。 谢谢!
回复:jsl 创建列中最常见值的表子集嗨女士,
感谢您的回复,我应该在我原来的帖子中提到我感兴趣的数据是字符而不是数字。 但我正在为您的回复添加书签,因为将来我需要使用数字数据执行相同的摘要。
回复:jsl 创建列中最常见值的表子集谢谢吉姆,这很完美。
回复:jsl 创建列中最常见值的表子集一种替代方法是使用 Summarize() 而不是汇总表,然后使用 Rank() 函数跳过排序步骤。 不幸的是,Summarize 中的统计选项仅限于数字列;因此,下面的示例脚本不适用于字符列。
dt =打开( “$SAMPLE_DATA/big class.jmp” ) ;
n = 3 ; // 最频繁值的数量
总结( G =经过( :年龄) , C =数数( :年龄)) ;
dt <<子集(行( dt <<选择地点(包含(撤销( G [秩( C )])[ 1 :: n ] ,查尔( :年龄)))))) ;
回复:jsl 创建列中最常见值的表子集由于示例数据表很小,因此以下示例脚本仅使用前 5 个选择。但我想你可以看到它是如何运作的。
名称默认为此处( 1 );
dt=打开( “$SAMPLE_DATA/big class.jmp” );
dtsumm = dt <<概括(
组(:身高),
频率( “没有任何” ),
重量( “没有任何” )
);
dtsumm <<种类( 按( :N 行 ), 顺序( 降序 ), 替换表( 1 ) );
dtsumm <<选择地点(排()> 5 )
dtsumm <<删除行;
dt最终 = dt <<加入(与(dtsumm),
通过匹配列( :height = :height ),
删除倍数( 0 , 0 ),
包括不匹配项( 0 , 0 ),
保留主表顺序( 1 )
);