FREQ,MEANSなどで集計する時に、各グループと全体で集計できるようにデータセットを加工しておく話

基本的なテクニックなのですが、僕がSASをはじめたばかりの頃に教えてもらって、おぉ!となったことを思い出したので書きます。

以下のようなデータセットがあったとします。

data Q1;
length GROUP $10.;
GROUP='A群';VAL='い';output;
GROUP='A群';VAL='ろ';output;
GROUP='A群';VAL='は';output;
GROUP='A群';VAL='い';output;
GROUP='B群';VAL='ろ';output;
GROUP='B群';VAL='ろ';output;
GROUP='B群';VAL='い';output;
GROUP='B群';VAL='ろ';output;
run;












これを各群ごと、かつ全体で集計するやりかたが、全然わからなかったのですが












data _Q1;
 set Q1
     Q1(in=ina);
  if ina then GROUP='全体';
run;

proc freq data=_Q1 noprint;
 table GROUP*VAL/out=A1(drop=PERCENT);
run;

でいいわけです。

流し込むデータを2倍にしてから集計するという発想がなかったので凄く驚いた覚えがあります。
今思うと、この時に、SASのデータステップは面白いなとスイッチが入った気がします。

0 件のコメント:

コメントを投稿