値の順番に応じて一定の割合でオブザベーションを取り出す方法
[OS]ALL
[リリース] 6.09e, 6.12, 8.1, 8.2
[キーワード] RANK, PERCENT
[質問]あるデータセットから、値のもっとも小さいものから10%程度のオブザベーションを取り出したいのですが、どのような方法がありますか?。
[回答]
RANKプロシジャとPERCENTオプションを利用する方法をご紹介します。 /* サンプルデータ */ DATA sample; DO student = 1 TO 100; tensu = INT(RANUNI(0)*100+1); OUTPUT; END; RUN; /* 値の小さいものから 10% を抽出 */ PROC RANK DATA=sample OUT=outdata(WHERE=(rank<=10)) PERCENT ; VAR tensu; RANKS rank; RUN;
|