2020年1月28日火曜日

[CALL SORT] 1オブザベーション内で変数間の値をソートする





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";

となります。


0 件のコメント:

コメントを投稿