【SAS/プログラミング】SORT。そーっとすることかな

統計プログラム使用する際は、おそらく必須になるsortプロシジャ。

<Program code>
proc sort data=[データセット1]
               out=[データセット2];
by [キー変数] ;
run;

これで、あらかじめあるデータセット1から新たにデータセット2を作成し、
作成する際、キー変数にて昇順に並び替えて作成されるというプロシジャ。

out=[データセット2]は省略可。
並び替えにもいろいろオプションがありまして、一例を紹介します。

・降順に並び替えたい場合
>キー変数の前に"decending"をつける。
ex: by A decending B
上記のように書くとAは昇順、Bは降順の順番で並び替えられます。

・並び替え後に重複するレコードを削除する。
out=[データセット]の後に"nodupkey"をつける。
ex: ....(前略) out=dataset2 nodupkey; by A B; run;
上記のように書くとA Bの昇順に並び替えた時、キーとなるA,Bの変数で重複しているレコードは削除されます。

重複削除したレコードを抽出したデータセットを作成する方法もあります。
<program code>
proc sort data=[データセット1]
               out=[データセット2] nodupkey
               dupout=[データセット3];
by [キー変数] ;
run;
上記のように"dupout"を使用するとできます。何が重複したんだ!って調べるときに使った経験があります。

・文字列変数だけど数値変数として扱ってソートしたい。
こちらも割と便利なオプションですねー。来る元となるデータは大概すべて文字列だったので。文字列だと1,11,2,...のようになってしまう可能性も!
<Program code>
proc sort data=[データセット1]
               out=[データセット2]
               sortseq=linguistic(numeric_collation=on)
;
by [キー変数] ;
run;
上記のように書くと数値のところは数値として見てソートしてくれます。
便利になりましたねー。

よく使うプロシジャにも便利なオプションがあり、日々パワーアップしてます。よく使うだけあり、調べるとこんなこともできるのか!と新たな発見があるものです。今回はよく使う内容だけでしたけど、それ以外もあればまた書きますね。

いいなと思ったら応援しよう!