RANKプロシジャのタイ値を連番にする方法について
[OS] ALL
[リリース] ALL
[キーワード] function
[質問]RANKプロシジャを使用してランク付けをする際に、ランク付け対象の変数が同一であった場合、タイ値となりますが、タイ値とせずに連番を採番する方法はありますか。
[回答]
RANKプロシジャでは、同一のランクに対して連番を付与することができません。 例えば、サンプルプログラムでは、変数:_rankにて、ランク値を手動で採番しております。 /*サンプルデータの作成*/ DATA sample; INPUT group $ goods $ price ; CARDS; 0001 name1 300 0002 name1 100 0001 name3 300 0001 name4 100 0003 name1 300 0002 name2 200 0003 name2 100 0001 name2 200 ; RUN; /*ソートを実施*/ PROC SORT DATA=sample OUT=sorted; BY group DESCENDING price; RUN; /*ランクの採番*/ DATA result; SET sorted; BY group DESCENDING price; RETAIN _rank 0; IF first.group = 1 THEN _rank = 0; _rank = _rank +1; RUN;
|