2014年12月10日水曜日

ATTRIBとKEEPを使った基本コンボ


大した内容じゃないですが、基本コンボを紹介。
まずATTRIBステートメントの性質から。

LABEL, LENGTH などの変数属性を、まとめて定義できるステートメント。
データステップの一番先頭に書くと、ATTRIBに指定した順番で変数が並んでくれる。



よくデータセット作成のシメとして、きちんと変数属性を定義する目的で使ってます。
例を見てみましょう。

*** 適当なサンプルデータ作成 ;
data DT1;
  retain A B C D E F 1 G "aa" H '20:00't  ;
run;

 C 
 D  
 E  
  1  
  1  
  1  
  1  
  1  
  1  
  aa  
 72000  


*** 要る変数だけ属性定義してKEEPする例 ;
data OUT1;
    attrib
       A label="あ" length=8.
       B label="い" length=8.
       C label="う" length=8.
       G label="え" length=$10.
       H label="お" length=8.   format=time5.
    ;
    set DT1;

    keep A B C G H;
run;

 C 
  1  
  1  
  1  
  aa  
 20:00 



解説
ATTRIBで変数属性を定義し、これら変数をKEEPで残しています。

ここで、ひとつ無駄がある。
KEEPする前の状態として、変数はATTRIBで指定した順番に並び、ATTRIBで指定されてないものはそのうしろに並びます。
(順番・・・A B C G H  D E F)

なので、「変数名をいっきに指定する方法 [まとめ]」のテクニックを利用してKEEPの部分を

keep A -- H ;


と省略して書いた方が楽です。

ちなみにKEEPあるあるで今回の話しに限ったことではないですが、後から保持する変数が追加になったとき、KEEPにその変数を書き忘れがちっていう、SASプログラマーあるあるにご留意を。



今回の例では変数の数が少ないので、必要性を感じづらいかもしれないですが、
実務では沢山の変数を扱うことになるので、その便利さがわかると思います。

0 件のコメント:

コメントを投稿