FREQプロシジャで任意の範囲でカテゴリ別に集計する方法

[OS]ALL
[リリース] 5.18, 6.07, 6.08, 6.09, 6.10
[キーワード] base, freq, format, procedure, tables, category

[質問]

FREQプロシジャで任意の範囲でカテゴリ別に集計する方法を教えてください。

[回答]

カテゴリごとに集計する場合、FORMATプロシジャであらかじめ範囲をまとめてフォーマットを作成し、FREQプロシジャでそのフォーマットを使用します。

proc format;
    value agefmt low-12 ='Low-Range'
                 13-15  ='Mid-Range'
                 16-high='Hi-Range';
  run;
  proc freq data=sasuser.class;
    tables age;
    format age agefmt.;
  run;
上記のプログラムを実行すると、次のように元のデータ値でなく、フォーマットで 変換した値で集計が行われます(フォーマット分類)。
                       Age in years
 
              Cumulative  Cumulative
      AGE     Frequency   Percent   Frequency    Percent
  ------------------------------------------------------
   Low-Range         7      36.8           7       36.8
   Mid-Range        11      57.9          18       94.7
   Hi-Range          1       5.3          19      100.0
フォーマット分類はFREQプロシジャだけでなく、他のプロシジャでも利用できます。
以下にCHARTプロシジャの例を示します。
  proc chart data=sasuser.class;
    vbar age / discrete;
    format age agefmt.;
  run;
横軸には、フォーマットで変換した値が使用されます。
  Frequency

      |                   *****
   10 +                   *****
      |                   *****
    8 +                   *****
      |       *****       *****
    6 +       *****       *****
      |       *****       *****
    4 +       *****       *****
      |       *****       *****
    2 +       *****       *****
      |       *****       *****       *****
      --------------------------------------------
          Low-Range   Mid-Range    Hi-Range 

                      Age in years