文字型に入っている数字のデータをproc sortする時に、数字とみなして並び替える

sortプロシジャはソートアルゴリズムや、ソートの順序規則を変えることができ、奥が深すぎるので、
実用的なテクニックだけ1つ紹介します。

data Q1;
length X $2;
X='1';output;
X='3';output;
X='5';output;
X='9';output;
X='11';output;
run;









これをXをby変数にしてソートすると、どうなるでしょうか?

proc sort data=Q1 out=A1;
 by X;
run;

以下のようになります









えっ!と思われた方もいるかもしれませんが、Xは文字型なので、言葉として辞書的にソートされちゃうイメージです。

なので数値的にソートしたければ、一端、数値に変換した変数を新しく割り当ててから、それでソートします。
しかし、やりたいことが単純な並び替えだけなのであれば、なんだか一手損な感じがしてしまいます。

そこで、ソートルールをいじくります。

proc sort data=Q1 out=A2
 sortseq=linguistic(numeric_collation=on);
 by X;
run;








青字の部分はかなり色々な書き方ができるので深入りしたい方は調べてみてください。






0 件のコメント:

コメントを投稿