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;
|
|