2015年7月29日水曜日

MEANS vs SUMMARYプロシジャ



大人しく控え目な性格のSUMMARYプロシジャは、MEANSプロシジャの影に隠れがちです。
この2つは、ほとんど同じ挙動をしますが、ほんのちょっと違います。


サンプルデータ
data DT1;
input A B;
cards;
1 125
2 10
3 20
;



違い①

以下はMEANS と SUMMARYプロシジャによる実行結果ですが、同じ結果が得られます。

proc means data=DT1 ;
   var A;
run;

proc summary data=DT1 print;
   var A;
run;




異なる点として、SUMMARYプロシジャは「PRINTオプション」を付けないと集計結果が画面に表示されません。

proc summary data=DT1 ;
   var A;
run;

ログ
ERROR: PRINTオプションまたはOUTPUTステートメントがありません。
NOTE: エラーが発生したため、このステップの処理を中止しました。



違い②

以下はVARステートメントを省略した場合の集計結果です。

proc means data=DT1 ;
run;







proc summary data=DT1 print;
run;


VARステートメントを省略すると、、
  • MEANSプロシジャ: CLASSステートメント等、その他のステートメントに指定していない全ての数値変数が集計される。
  • SUMMARYプロシジャ: OBS数が算出される。

SUMMARYプロシジャの方が全体的に最小限の動きしかしていない感じでですね。
まずは今回紹介した性質の違いを覚えておきましょう。



SUMMARYプロシジャが役に立つ例




0 件のコメント:

コメントを投稿