2014年5月26日月曜日

Sumステートメント入門



「Sumステートメント」または「合計ステートメント」とも言いますが、
どいうものかは説明よりプログラムを見てしまったほうが早いかも。


*** サンプルデータ作成 ;
data DT1;
    A=.   ;  output;
    A=10 ;  output;
    A=20 ;  output;
run;

 A 
  . 
 10
 20 

*** Sumステートメントを使う ;
data DT2;
    set DT1;
    NO + 1;
    A2 + A;
run;

 A   NO   A2 
  .    1     0 
 10   2  10
 20    3   30 



解説

変数名 + 足す値 ;

このイコールを省略した書き方がSumステートメントです。
変数の値を次レコードにも保持してくれて、どんどん足し合わせていくことができます。


注意点として、データステップ内でSumステートメント用の変数を新たに用意して、その変数にSumステートメントを行ってください。
仕組み上、データセットに既に存在している変数だとSumステートメントがうまく動作しません。



サンプルでは以下の動きをしています。
・「NO+1」は、変数NOに対して上から順に1を足していってます。
・「A2+A」は、変数A2に対して上から順に変数Aの値を足していってます。



ちなみに、RETAINを使って以下のように書いたときと同等です。

data DT2;
    retain NO A2 0;
    set DT1;
    NO = sum(NO,1);
    A2 = sum(A2,A);
run;



0 件のコメント:

コメントを投稿