4-4. グループ別の分析とケースの選定

BY

(ほとんど全ての)PROCステップの中でBYステートメントを用いると、BYで指定した変数の値によるグループ毎に分析が行われます。BYに複数の変数を指定した場合は各変数の値の組み合わせ毎に分析が行われます。

ex.
proc univariate data=test;
  var income;
  by work sex;
run;

データセットはBYステートメントで指定した変数で、予めSORTプロシジャを用いて昇順にソートされていなければなりません。降順にソートされている変数があれば(SORTプロシジャのBYステートメントと同様に)descendingキーワードで指定します。

WHERE

(ほとんど全ての)PROCステップの中でWHEREステートメントを用いると、WHEREで指定した条件式が真になるようなケースだけが分析に用いられます。

ex.
proc corr data=test;
  var workyear income;
  where age>=45; /* 45歳以上の者だけを対象にする */
run;

ds41を使って、BMIクラス別に要約統計量を算出し、総コレステロール<230の者だけを対象に分割表の分析を行ってみます。次のプログラムを入力し、実行してください(コメント部分は入力しなくて構いません)。

【Sample 4-5】

/* Sample 4-5 */

/* データセットをBMIクラスでソートしておく */
proc sort data=ds41;
  by bmic;
run;

/* BMIクラス別に要約統計量を算出 */
proc means data=ds41;
  title 'BMIクラス別要約統計量';
  var height weight bmi sbp dbp tc fbs;
  by bmic;
run;

/* 総コレステロール<230の者を対象にした分割表 */
proc freq data=ds41;
  title '総コレステロール<230の者を対象にした分割表';
  where tc<230;
  tables sex * undo / chisq;
run;

結果はこのように出力されます。

Sample 4-5はsample4-5.sasとして保存しておきます。