重複データをユニークなものとそうでないものに分割する方法
[OS] ALL
[リリース] ALL, SAS System 9以降(DUPOUTオプション)
[キーワード] Base, unique, duplicate, SORT, First.By, DUPOUT option
[質問]重複データの最初のオブザベーション(ユニーク)とそれ以外を2つのデータセットに分割したいのですが、どのような処理を行なえばよいでしょうか。
[回答]SORTプロシジャでオブザベーションの並べ替えを行なった後、FIRST.BY変数をご利用ください。 下記のサンプルをご参照ください。
DATA DATA1;
INPUT char $ num;
CARDS;
A 1
A 2
A 3
B 1
C 1
C 2
;
RUN;
PROC SORT DATA=data1 OUT=sdata1; /* 並べ替え */
BY char;
RUN;
DATA uni8 dup8;
SET sdata1;
BY char;
IF FIRST.char THEN OUTPUT uni8; /* FIRST.BY変数を利用 */
ELSE OUTPUT dup8;
RUN;
SAS9を使用している場合は、SORTプロシジャに追加されたDUPOUT=オプションを利用することで、SORTプロシジャのみで、同様の処理を行なうことが可能です。
PROC SORT DATA=data1 OUT=uni9
DUPOUT=dup9 NODUPKEY; /* SAS9のDUPOUTオプションを利用 */
BY char;
RUN;
|
|