TABULATEプロシジャ出力の列幅指定方法について

[OS] ALL
[リリース] SAS 8.2以降
[キーワード] Base, TABULATE, cell width, STYLE, CELLWIDTH option

[質問]

TABULATEプロシジャで、ODSのHTMLやPDF出力の際の列幅を指定するにはどのようにしたらよいでしょうか。

[回答]

STYLE=オプションのCELLWIDTH=オプションを指定することにより、該当変数の列幅を指定することが可能です。
STYLE=オプションは、VARステートメント、CLASSステートメントやTABLES ステートメント等で指定することができます。
次の例を参考にしてください。

例:TABULATEプロシジャで、ODS HTML出力でのSTYLE=オプションを指定する例


  ODS HTML FILE='C:¥temp¥test1.html';
  PROC TABULATE DATA=sashelp.class;
    CLASS sex /  STYLE=[CELLWIDTH= 5 cm];
    VAR weight / STYLE=[CELLWIDTH= 3 cm];
    VAR height ;
    TABLES sex, (weight height*[STYLE=[CELLWIDTH=5 cm]]);
  RUN;
  ODS HTML CLOSE;

また、CLASSLEVステートメントを使用して、CELLWIDTHオプションとフォーマット(出力形式)を組み合わせることにより、列を形成する変数の値ごとに列幅を変更することも可能です。
次の例では、ユーザー定義フォーマット「$sexw.」を用意してCLASSLEVステートメントで指定し、変数sexの値ごとに出力幅を変更しています。

例:CLASSLEVステートメントでユーザー定義フォーマットを利用する指定例


  PROC FORMAT;                     /* 変数 SEX に対するフォーマット作成 */
    VALUE $sexw F='2 cm'                 /* F の場合 幅2cm M の場合 1cm */
                  M='1 cm';
  RUN;
  ODS HTML FILE="C:¥temp¥test2.html";
  PROC TABULATE DATA=sashelp.class;
    CLASS sex age;
    CLASSLEV sex / style=[cellwidth=$sexw.];      /* フォーマットを使用 */
    CLASSLEV age  / style=[cellwidth=5 cm];
    TABLE age,sex;
  RUN;
  ODS HTML CLOSE;