前回 「書式の設定【STYLE=】」 の応用。
「CALL DEFINE」 で、特定の行または列だけ書式を設定する事ができます。
COMPUTE 対象変数;
CALL DEFINE( "対象変数", "STYLE", "STYLE=[スタイル設定]"); ENDCOMP; |
諸注意
- STYLE=は、ODS LISTGNG出力先には対応していないので、ご注意下さい。
- CALL DEFINEを複数定義すると、うまく適用できない場合があります(記事の最後に関連記事のリンク貼ってます)
では、例をみていきます。
列の書式設定 ①
以下のように「_COL_」と書いてもOK
(こう書くと、COMPUTEステートメントに書かれた変数AGEが対象になる。)
列の書式設定 ②
ここで注意!
NAMEに対する書式設定ですが、「compute NAME;」 ではなく 「compute AGE;」と指定しています。
なぜかというと、、以下ルールに従っているからです。
① COMPUTEステートメント内で使われている変数はAGEとNAMEです。
② このAGEとNAMEのうち、COLUMNステートメントで一番後ろに指定されている変数はAGEです。
③ よって 「compute AGE;」 とする。
ちなみに「compute HEIGHT;」としてもOK。
(COLUMNステートメントでHEIGHTの方がNAMEやAGEより後ろに指定されているから)
行の書式設定
「_ROW_」で該当の行全体に対して書式設定を行います。
📝ちなみに、、
CALL DEFINEを複数定義すると、うまく適用できない場合があります。
proc report data=SASHELP.CLASS nowd; column NAME AGE ; define NAME / display; define AGE / display; compute AGE; call define( "AGE", "style", "style=[color=blue]" ); endcomp; run; |
以下のように「_COL_」と書いてもOK
compute AGE; call define( _COL_ , "style", "style=[color=blue]" ); endcomp; |
(こう書くと、COMPUTEステートメントに書かれた変数AGEが対象になる。)
proc report data=SASHELP.CLASS nowd; column NAME AGE HEIGHT; define NAME / display; define AGE / display; define HEIGHT / display; compute AGE; if AGE > 13 then call define("NAME","style","style=[color=blue]"); endcomp; run; |
ここで注意!
NAMEに対する書式設定ですが、「compute NAME;」 ではなく 「compute AGE;」と指定しています。
なぜかというと、、以下ルールに従っているからです。
① COMPUTEステートメント内で使われている変数はAGEとNAMEです。
② このAGEとNAMEのうち、COLUMNステートメントで一番後ろに指定されている変数はAGEです。
③ よって 「compute AGE;」 とする。
ちなみに「compute HEIGHT;」としてもOK。
(COLUMNステートメントでHEIGHTの方がNAMEやAGEより後ろに指定されているから)
proc report data=SASHELP.CLASS nowd; |
「_ROW_」で該当の行全体に対して書式設定を行います。
📝ちなみに、、
CALL DEFINEを複数定義すると、うまく適用できない場合があります。
【PROC REPORT】1つの項目に複数のCALL DEFINEを定義したい
インラインフォーマットを組み合わせると、更に自由度の高い書式設定が行えます。
ODS出力時に文字の書式設定をする【インラインフォーマット】
最後にCOMPUTEステートメントを使う上で超重要&ありがちな落とし穴もあるので、ちょっと前提知識必要になるけど、是非ご覧ください。
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど②
REPORTプロシジャ入門記事一覧
1.基本構文【COLUMN, DEFINE】
2.ヘッダーの設定
3.並べ替え・グループ化【ORDER, GROUP】
4.集計【ANALYSIS】
5.転置集計【ACROSS】
インラインフォーマットを組み合わせると、更に自由度の高い書式設定が行えます。
ODS出力時に文字の書式設定をする【インラインフォーマット】
最後にCOMPUTEステートメントを使う上で超重要&ありがちな落とし穴もあるので、ちょっと前提知識必要になるけど、是非ご覧ください。
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど
「PROC REPORT」の「COMPUTE」がうまく動かないんだけど②
1.基本構文【COLUMN, DEFINE】
2.ヘッダーの設定
3.並べ替え・グループ化【ORDER, GROUP】
4.集計【ANALYSIS】
5.転置集計【ACROSS】
0 件のコメント:
コメントを投稿