重複データをユニークなものとそうでないものに分割する方法
[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; |