从数据获取特定的百分数行你好
我试图弄清楚如何从数据中获取行值的前25%。基本上是将原始数据的前25%值作为子集。
试过这个;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
top_25th_perc = dt << Summary(
Group( :sex),
Quantile( :height, .25 ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 1 ),
output table name( "top_25th_perc" )
);</CODE><CODE class=" language-jsl">
生成下表。

我需要的是dt的子集,两组中只有25%的行。
怎么做?
接下来的问题是我们如何才能对这25个百分点进行抽样,并说从该分布中获取一些样本。 再次汇总数据表是我所需要的。
分析工具数据表脚本编写回复:从数据中获取特定的百分位数行我的解决方案可能有些不足。您指示您想要“最高”的25%,然后通过基于25%的百分比进行计算来确定最高的75%。下面的代码从雄性和雌性中选择数据前25%的行
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << select where( :height >= Col Quantile( :height, .75, :sex ) );
dtTop = dt << subset( selected rows( 1 ), selected columns( 0 ) );
回复:从数据中获取特定的百分位数行非常有用,谢谢TXnelson!
有没有一种方法可以在移动最终数据集之前对那25%的数据进行采样?
回复:从数据中获取特定的百分位数行这是我从前25%抽取样本的方式
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
top25pRows = dt << get rows where( :NPN1 >= Col Quantile( :NPN1, .75, :site ) );
dt << clear selected row states;
// create a 5% of the top 25 percentile data
// Select 5% of the top 25 percentile rows
For(i=1,i<=nrows(top25pRows),i++,
If(random uniform(0,1)<=.05,rowstate(top25pRows[i])=selected state(1));
);
// Create the output data table
dtTop = dt << subset( selected rows( 1 ), selected columns( 0 ) );