例えば以下のような適当なデータがあったとします。
data Q_1;
call streaminit(1011);
do i=1 to 100;
A=ceil(rand('uniform')*10);
B=ceil(rand('uniform')*2);
C=ceil(rand('uniform')*5);
D=ceil(rand('normal')*10);
output;
end;
drop i;
run;
例えばAでグループ化して平均B,C,Dそれぞれの変数について平均をとりたければ
proc means data=Q_1 noprint nway;
class A;
output out=OUT_1 mean= X Y Z;
run;
でいいわけです。
この時、作成されたデータセットOUT_1について
Bの平均は変数X Cの変数はY DはZに格納されます。
変数の位置関係が重要になるので注意してください。
さてここで
proc means data=Q_1 noprint nway;
class A;
output out=OUT_2 mean=;
run;
のようにmean=で何も指定しないとどうなりますか?
エラーにならず
Bの平均はB Cの平均はC Dの平均はDです。
出したい要約統計量が一つであれば、こっちの書き方の方がわかりやすいかもしれませんね。
ちなみにもし、出したいのがBとDの平均とCの合計が欲しいといった
わがままも下のように( )で指定して実現可能です。
proc means data=Q_1 noprint nway;
class A;
output out=OUT_3 mean(B D)=BMEAN DMEAN SUM(C)=CSUM;
run;
創意工夫は無限大、meansプロシジャは優秀ですね
0 件のコメント:
コメントを投稿