FREQプロシジャで累積度数、クロス集計での欠損値の算出

[OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10
[キーワード] base, freq, datastep, merge, summarize

[質問]

FREQプロシジャで集計結果をデータセット出力する際、累積頻度も出力させたいのですがどうすればよいでしょうか。またクロス集計での欠損セルについてのオブザベーションを出力させるにはどうしたらよいですか。

[回答]

残念ながら、FREQプロシジャのオプションだけでは出力できません。DATAステップで加工してください。
累積頻度はDATAステップの合計ステートメントで簡単に得られます。

proc freq data=fitness;
            tables group/noprint out=freqout;
  run;
  data result;
    set freqout;
    cum_freq+count;
    cum_pct+percent;
  run;
欠損セルについてのオブザベーションは、あらかじめ各項目のカテゴリの全組み合せを 度数0で作成しておき、これをFREQプロシジャの出力とマージさせて挿入します。
proc freq data=CLASS;
            tables age * sex / noprint out=cross;
  run;
  data zeros;
    retain count percent 0;
    do age=11 to 16;
      do sex='F','M';
        output;
      end;
    end;
  run;
  data result;
    merge zeros cross;
    by age sex;
  run;