SAS

GTLで条件式を使う

GTLはデータに応じて作図設定を制御することができます。

構文

SAS baseとは異なり、条件式の終了を明示するために「endif;」が必要です。またelse if文は使用できません。

は完全なブロックかステートメント文でなければなりません。
例えばlayout overlayブロックを条件に応じて変えたい場合、には「layout overlay~endlayout;」
まで記述します。

条件式はSAS関数が使用できます。

if (condition) 

   <GTL statement>;

else
   
   <GTL statement>;

endif; 

利用例

合格基準に合格した場合のみ散布図を出力します。

まずデータステップで合格基準の判定を行い、合格ならマクロ変数HANTEIに1を格納します。

次にsgrenderプロシジャにてdynamic variable _FLGにHANTEIを代入します。

HANTEI=1の時には散布図を出力し、それ以外の時は散布図を出力せずに”Not Applicable”と表示します。

データの判定する条件式を直接GTLに組み込むこともできると思いますが、データの演算関係はデータステップかSQLでやったほうが多分良いと思います。

data _NULL_; /* 合格基準を満たすか調べるコードを入力する*/ 
   call symputx("HANTEI","1");
run;

proc template;
define statgraph mygraph;
dynamic _TIME _RESPONSE _FLG;
begingraph;
entrytitle "条件文テスト(FLG="_FLG")";

if (_FLG=1) 
   layout overlay;
      scatterplot x=_TIME y=_RESPONSE;
   endlayout;
else
   layout overlay;
      entry "Not Applicable" / textattrs=(size=24) autoalign=auto;
   endlayout;
endif;
endgraph;
end;
run;

proc sgrender data=ds1 template=mygraph;
   dynamic _TIME="TIME"
   _RESPONSE="RESPONSE"
   _FLG=&HANTEI.;
run;

フラグを変えて出力すると以下の通りになります。

合格基準を満たした場合

合格基準を満たさなかった場合