means(summary)プロシジャのautonameオプションの話

今、以下のデータセットがあって

data Q1;
X=1;Y=2;Z=3;output;
X=2;Y=4;Z=3;output;
X=3;Y=2;Z=6;output;
run;









で、

proc means data=Q1 noprint;
 var X Y Z;
 output out=OUT(drop=_TYPE_ _FREQ_) mean=;
run;

とすると、データセットOUTの中身は





となります。

要約統計量=の後、何も指定しなければ、元の集計対象の変数名を上書きして
結果が格納されます。

出したい要約統計量が1つならそれでいいのですが

proc means data=Q1 noprint;
 var X Y Z;
 output out=OUT(drop=_TYPE_ _FREQ_) mean= sum=;
run;

のように2つ指定しても、格納する変数がないので、




上記のようなWarningがでて(University Editionのメッセージは全部英語なんです、、。)
sum=の方は無視されます。


なので

proc means data=Q1 noprint;
 var X Y Z;
 output out=OUT_1(drop=_TYPE_ _FREQ_) 
            mean=MEAN_X MEAN_Y MEAN_Z
            sum=SUM_X SUM_Y SUM_Z;
run;

のように集計結果を格納したい新規変数名を、順番に記述してやれば



となります。


が、はっきり言って、1つ1つ指定するのは、変数が多いと大変面倒なので

proc means data=Q1 noprint;
 var X Y Z;
 output out=OUT_2(drop=_TYPE_ _FREQ_)
        mean= sum=/autoname;
run;

こうしてやります。

すると







「変数名_要約統計量名」のルールに従って、自動的に変数が作成されるのです。
まあ便利!


ちなみに、例えば、XとYの平均、Zの合計だけを出したいとかって感じで、選択したい場合は

proc means data=Q1 noprint;
 var X Y Z;
 output out=OUT_3(drop=_TYPE_ _FREQ_)
            mean(X Y)=
            sum(Z)= /autoname;
run;






OKです。

森下卓九段が今期のNHK杯で敗退してしまったので、最近テンション低めです

0 件のコメント:

コメントを投稿