データから特定のパーセンタイル行を取得するこんにちは、
データから行値の上位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">
これにより、以下の表が得られます。

必要なのは、両方のグループの25パーセンタイル行しかないdtのサブセットです。
どうやってするか?
次の質問では、これらの25パーセンタイルのサンプルを取得し、その分布からサンプルを取得する方法を説明します。 再び要約データテーブル私が必要なもの。
分析データ表スクリプティングRe:データから特定のパーセンタイル行を取得する私は自分の解決策に少しずれているかもしれません。「上位」の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 ) );
Re:データから特定のパーセンタイル行を取得するこれはうまく機能していますありがとうTXnelson!
最終的なデータセットを移動する前に、その25パーセンタイルデータをサンプリングする方法はありますか?
Re:データから特定のパーセンタイル行を取得するこれが私が上位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 ) );