SAS9.4M6で「CALL SORT」が追加されてますね。
これは「1オブザベーション内で変数間の値をソート」することができます。
例1
data test; x=2; y=3; z=1; run; data test2; set test; call sort(x,y,z); run; |
数値変数 X, Y, Z に対して、1つのオブザベーション内で値を昇順にソートしています。
例2
data test3; length x y z $3.; x="tea"; y="sas"; z=""; run; data test4; set test3; call sort(x,y,z); run; |
文字変数 X, Y, Z に対して、1つのオブザベーション内で値を昇順にソートしています。
ポイント
- 引数がすべて数値変数の場合は数値としてソートし、引数がすべて文字変数の場合は文字としてのソートが行われます
- 引数に指定する変数の LENGTH はすべて同じであること
上のポイントの1つ目についてもっと詳しくいうと、たとえば、以下のように文字変数に数値が格納されている場合、
data test5; length x y z $3.; x = "2"; y = "1"; z = "10"; run; |
それを CALL SORT(X,Y,Z) とすると、文字変数なんで文字としてのソートが行われて、
x = "1"; y = "10"; z = "2"; |
となります。