ある6人の生徒がテストを受けた結果、90点が2人、80点が3人、50点が1人でした。
さて、6人のテストの点数の、平均と標準偏差を求めよ。
って問題をproc meansで解けって言われたら、流し込むデータはどのように作りますか?
まあ、何も考えずに
data Q0;
X=90;output;
X=90;output;
X=80;output;
X=80;output;
X=80;output;
X=50;output;
run;
proc means data=Q0 noprint;
var X;
output out=A0;
run;
でも当然OKなのですが、freqステートメントの利用を想定すると、流し込むデータはこのようにできます。
data Q1;
X=90;Y=2;output;
X=80;Y=3;output;
X=50;Y=1;output;
run;
Xに値、Yはその値のオブザベーション数を入れます。
つまりX=90;Y=2;はX=90が2オブザベーションあるよということを示します。
そしてプロシジャは
proc means data=Q1 noprint;
var X;
freq Y;
output out=A1;
run;
とすれば、結果は
です。
冒頭
先述のコードと同じになります。
freqで指定した変数の値分、オブザベーションを読み込んだとみなして、計算してくれるわけです。
オブザベーション数なので整数である必要があります。小数を指定しても切り捨てられます。
また1未満の数や0を入れた場合、その値は0オブザベーション、つまり無いものとして扱われます。
意外と知られていないステートメントの気がしますが、考えれば使いどころは結構あります。
0 件のコメント:
コメントを投稿