まずは構文をご覧ください。
構文
例を見ていきましょう。
ステップ1・・・ グラフテンプレートの作成
ステップ2・・・ マクロ変数に値を設定して、グラフ作成実行
覚えておきたいポイント
ポイント3
関数
マクロ変数を引数にする
軸の設定
PROC TEMPLATE ; DEFINE STATGRAPH テンプレート名; MVAR マクロ変数1 マクロ変数2 ・・・ ; NMVAR マクロ変数1 マクロ変数2 ・・・ ; END; RUN; |
- MVAR に指定したマクロ変数は、PROC TEMPLATE内で文字の設定値として参照可能になる。
- NMVAR に指定したマクロ変数は、PROC TEMPLATE内で数値の設定値として参照可能になる。
proc template; define statgraph MYGRAPH; mvar m_TITLE m_XVAR m_YVAR; nmvar m_XREF; begingraph; entrytitle m_TITLE; layout overlay; scatterplot x=m_XVAR y=m_YVAR; referenceline x=m_XREF / curvelabel="特に意味はない参照線"; endlayout; endgraph; end; run; |
- 「mvar m_TITLE m_XVAR m_YVAR」で、マクロ変数「m_TITLE」~「m_YVAR」を文字の設定値として参照可能にする。
- 「nmvar m_XREF」で、マクロ変数「m_XREF」を数値の設定値として参照可能にする。
- 「entrytitle m_TITLE」で、グラフのタイトルにマクロ変数「m_TITLE」を設定。
- 「scatterplot x=m_XVAR y=m_YVAR」で、散布図のX軸にマクロ変数「m_XVAR」、Y軸にマクロ変数「m_YVAR」を設定。
- 「referenceline y=m_XREF」で、X軸の参照線にマクロ変数「m_XREF」を設定。
- ステップ1で使用しているマクロ変数「m_TITLE」~「m_XREF」に値を設定。
- PROC SGRENDERでグラフ作成を実行しています。
ポイント1
MVAR/NMVARの細かいルールでミスってうまく動かないことが多いので、リファレンスを参照しつつ、実行後にログや出力結果を確認するようにしましょう。
例えば、以下の青字部分をご覧ください。
PROC TEMPLATEでは通常「TICKVALUELIST」を以下のようにカッコで囲って数値を列挙しますが、
tickvaluelist=(0 100 200) |
NMVARでマクロ変数を設定する場合、カッコは不要。
tickvaluelist=m_XLIST |
マクロ変数に値を設定する際も、カッコは不要です。
%let m_XLIST = 0 100 200; |
ポイント2
データステップ100万回「マクロ変数に数値をいれて戻すと誤差がでちゃう場合がある問題について考える話」
で解説されてるように、マクロ変数に小数をいれると切り捨てられる可能性があるのでご注意ください。
データステップ100万回「マクロ変数に数値をいれて戻すと誤差がでちゃう場合がある問題について考える話」
で解説されてるように、マクロ変数に小数をいれると切り捨てられる可能性があるのでご注意ください。
本題と逸れますがマクロ変数は「スコープ」というものを理解していないと、落とし穴にはまってしまうことがあります。スコープについては以下記事を参照下さい。
マクロ変数を引数にする
軸の設定
0 件のコメント:
コメントを投稿