2019年3月19日火曜日

【小技】ODSグラフの保存時、ファイル名にBY値を入れる




まず、前提知識として以下「ODSグラフを画像ファイルとして保存する方法」を一読ください。
https://sas-boubi.blogspot.com/2015/09/odssg.html



そして今回紹介するのが、SAS9.4M5からの新機能。
以下のプログラムをご覧ください。

proc sort data=sashelp.class out=class;
   by age;
run;

options nobyline;
ods graphics  /  reset=index imagename='test_#byval1'  outputfmt=png;
ods html close;   /* ←他に開いているODS出力先があれば全てCLOSEして下さい */
ods listing gpath="出力するパスを指定";

   proc sgplot data=class;
      scatter x=height y=weight;
      by age;
   run;

ods listing close;
ods graphics  /  reset=all;
ods html; /* ←デフォルトの出力をHTMLにしている場合に記述  */
/* その他、デフォルトの出力があれば、適宜記述 */


「ODS GRAPHICS」の「IMAGENAME=」の中で#BYが使えるようになりました!
上の例では「test_11.png、test_12.png・・・」という感じでファイルが作られます。


「OPTIONS NOBYLINE」と#BYの具体的な挙動は以下のリンク記事を参照下さい。



ただし!!

現状、#BYLINEと#BYVAR は挙動が安定していなかったので使用しない方が良さそう。
具体的には

  • #BYLINEを指定するとログにWARNINGがでて環境によってはファイル名もおかしくなる(そもそもリファレンスにも#BYLINEの使用について言及されていない)
  • #BYVARを指定すると、BY変数にラベルがついてても、ラベルではなく変数名が返される(リファレンスに書かれている挙動と異なる)

将来のバージョンで修正されるかもしれないですが、現状は#BYVALのみ使うほうがよさそうです。



0 件のコメント:

コメントを投稿