変数値の小さい順に、順位を与える事ができます。
PROC RANK DATA = 読込データ OUT = 出力データ TIES = タイ値の扱い ;
VAR 順位を見る変数 ; RANKS 順位を格納する変数 ; RUN ; |
- 欠損値には順位がつかない。
- RANKSを指定しないと、VARの変数に順位が格納される(上書きされる)。
- 同値があった場合の取り扱いを、TIESオプションで設定。
- 以下で紹介されている「浮動小数点の誤差」ってやつで微妙に値が異なっていると、別々の順位が割り当てられるのでご注意ください。
- データステップ100万回「背筋が凍る、厄介でおっかない小数点誤差の話」
- 誤差を解決するためにROUND関数を使用する場合、この関数の制限にもご注意下さい(有効数字などの制限がある「SAS社リファレンス」」
サンプルデータ
TIESオプションの設定別
ちなみに、値が大きい順に順位をつけたい場合は、descendingオプションをつけます。
data DT1;
input A @@; cards; 10 10 21 30 ;
|
TIESオプションの設定別
proc rank data=DT1 out=OUT1 ties=low;
var A; ranks A2; run;
1位と2位が同値なので、最小の1位が入る。 次の値が3位
proc rank data=DT1 out=OUT2 ties=high;
var A; ranks A2; run;
1位と2位が同値なので、最大の2位が入る。 次の値が3位
proc rank data=DT1 out=OUT3 ties=mean;
var A;ranks A2; run;
1位と2位が同値なので、平均の1.5位が入る。 次の値が3位
proc rank data=DT1 out=OUT4 ties=dense;
var A;ranks A2; run;
1位と2位が同値なので、1位が入る。
次の値が2位になる。
|
proc rank data=DT1 out=OUT5 ties=dense descending;
var A; ranks A2; run;
|
0 件のコメント:
コメントを投稿