2016年9月28日水曜日

変数の順番を変える小技



有名な小技です。


たとえば変数がA、C、Bの順に並んでいるデータセットがあり、、
data DT1;
   A=1;  C=1;  B=1;
run;
  A  
  C  
  B  
  1  1  1

これをA、B、Cの順に並び替えたいとします。


この場合、以下のように 「属性定義をするステートメント」 を先頭に入れてやることで順番を変える事ができます。
DT2;
   length A B C 8.;
   set DT1;
run;
  A  
  B  
  C  
  1  1  1

ただし、LENGTHステートメントの場合、変数の型とか長さも入れなきゃいけないので面倒です。


そんな時は、FORMATステートメントを使うと楽です。
DT2;
   format A B C;
   set DT1;
run;

  A  
  B  
  C  
  1  1  1


またRETAINステートメントを使っても同様の処理ができます。
しかし調べてみたらあまり推奨されていないようです。
(RETAINの仕組みをよく知らずに使うと、本来の「値を次のオブザベーションに引き継ぐ」という機能が意図せず働いてしまう可能性があるため。だそうです)

推奨してないわりに海外のSAS公式ページでRETAIN使う方法が紹介されてましたが。。

0 件のコメント:

コメントを投稿