SORTプロシジャ

スポンサーリンク

概要:データセットをソートします。重複削除などでも使います。

構文

構文
PROC SORT <collating-sequence-option> <other option(s)>;
  BY <DESCENDING> variable-1 <<DESCENDING> variable-2 ...>;
  KEY variable(s);
RUN;
ステートメントの説明
ステートメント必須解説
BY並べ替え変数を指定。
KEY並べ替えキーと変数を指定。
PROC SORTステートメントのオプション
オプション必須解説分類
ASCIIASCIIを指定。
DATA=SAS-data-set入力データセットを指定。
DATECOPY作成日と変更日を変更せずにデータセットを並べ替える。
FORCE強制的に冗長な並べ替えを行う。
OVERWRITE置換出力データセットが作成される前に、入力データセットを削除する。
PRESORTEDデータセットがすでに並べ替えられた可能性があるかどうかを指定。
REVERSE文字変数の照合シーケンスを逆順にします。
SORTSIZE=memory-specification利用可能なメモリを指定します。
TAGSORT一時的なディスク使用量を減らします。
DUPOUT=SAS-data-set重複オブザベーションの書き込み先となる出力データセットを指定。Create output data sets
OUT=SAS-data-set出力データセットを指定。Create output data sets
UNIQUEOUT=SAS-data-set除外されたオブザベーションの出力データセットを指定。Create output data sets
NODUPKEYBY値が重複するオブザベーションを削除する。Eliminate duplicate observations
NOUNIQUEKEY一意のソートキーがある出力データセットからオブザベーションを除外する。Eliminate unique observations
NOTHREADSスレッド化された並べ替えは実行しない。Override SAS system option THREADS
THREADSスレッド化された並べ替えの有効化を可能にする。Override SAS system option THREADS
DANISHデンマーク語を明記。Specify the collating sequence
EBICDICEBCDICを指定。Specify the collating sequence
FINNISHフィンランド語を指定。Specify the collating sequence
NATIONALカスタマイズされた順序を指定。Specify the collating sequence
NORWEGIANノルウェー語を指定。Specify the collating sequence
POLISHポーランド語を指定。Specify the collating sequence
SORTSEQ=collating-sequence照合シーケンスを指定。Specify the collating sequence
SWEDISHスウェーデン語を指定Specify the collating sequence
EQUALSBYグループ内の相対順序を指定。Specify the output order
NOEQUALSBYグループ内の相対順序を保持しない。Specify the output order

テスト用データセットを作成
data DummyData;
input NAME $ AGE SEX $;
cards;
Aoki 10 M
Iioka 15 F
Ueki 20 M
Eto 10 F
Onozawa 10 F
;
run;
ただソートするだけ
proc sort data = DummyData out = Sorted1;
by AGE;
run;
nodupkeyオプションをつけたソート

キーが重複したオブザベーションを削除します。

proc sort data = DummyData out = Sorted5 nodupkey;
  by AGE;
run;

その他

nodupオプションをつけたソート

nodupオプションは公式ドキュメントに説明がありませんが、動くようなので一応メモしておきます。


proc sort data = DummyData out = Sorted2 nodup;
  by AGE;
run;

proc sort data = DummyData out = Sorted3 nodup;
  by NAME;
run;

AGEをキーにしたときにもNAME=Aokiのオブザベーションが削除される予想だったが、第一変数がソートされていないと削除されないらしい。

第一変数をソートしなくてもたまたま第一変数が都合よくソートされるデータを作って試してみる。

data DummyData2;
input NAME $ AGE SEX $;
cards;
Aoki 10 M
Iioka 15 F
Aoki 10 M
Ueki 20 M
Eto 10 F
Onozawa 10 F
;
run;
proc sort data = DummyData2 out = Sorted4 nodup;
by AGE;
run;

ソート状況が異なるだけでnodupオプションの挙動が異なることがわかった。
手元のマニュアルでは「すべての変数の値が重複している場合にオブザベーションを削除する」とあるが、使い方には注意が必要。

コメント