GTLの中でeval関数を使うことによって、SAS関数を使えて、動的なテンプレート定義ができたりする話

ちょっとした話です。

data Q1;
call streaminit(777);
 do Z= 1 to 10;
  X=rand('uniform');Y=rand('uniform');
  output;
 end;
run;


















GTL、テンプレート定義は基本的に静的なもので、
dynamicステートメントやマクロで値を渡す以外は、template内で実行時に
変更を伴う動的な処理はできないのですが
evalを使うとSAS関数が使えるので、

proc template;
 define statgraph G1;
 begingraph;
 layout overlay;
  scatterplot x=X y=Y
    /name='n1'
     markerattrs=(size=11 weight=bold symbol=circlefilled)
     group=eval(ifc(Z<=5,'low','high'));
   discretelegend 'n1'/title='Z'
                        location=inside halign=right valign=bottom;
  endlayout;
  endgraph;
  end;
 run;

 proc sgrender data=Q1 template=G1;
 run;






















のように予めグループ化用の変数を用意してなくても、データから条件を付けて
ダイレクトにグループ化したりできます。

或いは、よく使うのが、グラフに参照線入れる時に、mean関数とかで、平均値とか
要約統計量を使いたい場合とかですかね。


0 件のコメント:

コメントを投稿