2017年3月7日火曜日

ODSTABLEプロシジャ入門3:変数の設定【DEFINE COLUMN】


出力する変数に対して、オプションを設定する方法を紹介。



基本構文

  PROC ODSTABLE  ・・・;
       DEFINE  COLUMN   出力変数名;
             オプション ;
       END;
  RUN;


または、以下のように事前にCOLUMNステートメントで出力変数名を記述していれば、、
  PROC ODSTABLE  ・・・;
       COLUMN   出力変数名1   出力変数名2 ・・・ ;

       DEFINE  出力変数名1;
             オプション ;
       END;
  RUN;

「DEFINE COLUMN 出力変数名」ではなく「DEFINE 出力変数名」というように縮めて書けます。



オプション一覧(一部)

※ 設定可能なオプションは rtf, html 等の出力先毎に違う&オプションの組み合わせで挙動が変わる事があるので、リファレンスも要参照です。

設定設定内容
header = "列ラベル"

列ラベル
text_split = "改行用区切り文字"

データ部分の改行用区切り文字
blank_dups = on

前のオブザベーションの値と同じだったら値を非表示にする
  • フォーマット適用後の値に対して動作する
  • 他のオプションと組み合わせて挙動を変えることが出来る(記事の下の方に例を載せてます)
vjust = top | center | bottom

縦位置
justify = on
just 
= right | center | left 

横位置
  • 列ラベルも横位置が設定されます(define headerとかで設定していない場合)
style = {書式設定}

  • ods listing以外の出力先(rtf, html等)で設定可能。
    設定できる書式はods出力先毎に違います。記述方法や注意点等とあわせ、リファレンスをご確認下さい。
  • {書式設定} の部分はproc reportでの書き方と似てるので、以下リンク先の記事も参考になると思います


では例をいくつか見ていきましょう。


Sample data

proc sort data=SASHELP.CLASS out=CLASS;
  by AGE WEIGHT;
  where AGE in (13,14);
run;


例①

proc odstable data=CLASS;
  column AGE SEX NAME ;
  define SEX;
      header = "せいべつ";
  end;
run;

変数SEXの列ラベルを「せいべつ」に変えています。


例②

proc odstable data=CLASS;
  column AGE SEX NAME ;
  define SEX;
      define header HEAD_SEX;
         text "せい#べつ";
         split = "#";
      end;
      header = HEAD_SEX;
  end;
run;

ちょっとしたテクニック。
define column内にdefine headerを定義することで、header=オプションで参照することが出来ます。


例③

proc odstable data=CLASS;
  column AGE SEX NAME;
  define AGE;
     blank_dups = on;
  end;
  define SEX;
     blank_dups = on;
  end;
run;

「blank_dups = on」で、前のオブザベーションと同じ値だったら値を非表示に。


また、「classlevels = on」というオプションを設定すると「blank_dups = on」の挙動が変わります。

proc odstable data=CLASS;
  column AGE SEX NAME;
  classlevels = on;

  define AGE;
     blank_dups = on;
  end;
  define SEX;
     blank_dups = on;
  end;
run;

本来、4オブザベーション目のSEXの値「F」は非表示になるはずですが「classlevels = on」によって挙動が変わりました。
「blank_dups = on」を設定した変数内で、i番目の列(AGE)の値が非表示になっていなければ、i+1番目の列(SEX)の値も非表示にしない、という挙動になります。



ODSTABLEプロシジャ入門記事一覧

1.基本構文【COLUMN】
2.ヘッダー・フッター【DEFINE HEADER, FOOTER】
3.変数の設定【DEFINE COLUMN】


0 件のコメント:

コメントを投稿