2020年3月11日水曜日

PROC COPY の「OVERRIDEオプション」がいい感じ





とにかくこのプログラムを見てほしい。

proc copy in=sashelp out=work override=(keep=name age);
    select class;
run; 



  • SASHELP.CLASSをWORKにコピーしています。
  • OVERRIDE=オプションで、出力データセットに対して変数NAMEとAGEのみをKEEP



こんな感じで、
OVERRIDEオプションは、出力データセットに対して、データセットオプションを設定出来ちゃうんです。




このオプションの面白いところは、以下のような感じで、、

proc copy in=sashelp out=work override=(rename=(weight=wei));
    select class cars;
run;


出力データセットが複数ある場合、そのすべてのデータセットに、データセットオプションを適用できちゃうところ。



こういう、複数のデータセットに一括でオプションを適用するのって、確か他のプロシジャでは出来ないはず。
アイディア次第では結構便利でもあるし、コピーするついでにって感じで、かなり強力な機能だと思いました。



2020年3月2日月曜日

[SGPLOT] 塗りつぶしパターンの設定




SGPLOTの棒グラフやポリゴンの描画などで「塗りつぶしパターン」を設定する方法を紹介。



まずは、塗りつぶしパターンとか気にしないで、普通に棒グラフを描画してみます。

proc sgplot data=sashelp.class;
    vbar age / stat=percent group=age;
run;





次に塗りつぶしパターンを設定してみます。

ods graphics / attrpriority=none;
proc sgplot data=sashelp.class;
    vbar age / stat=percent group=age fillpattern;
run;



  • PLOTステートメントで「FILLPATTERN」を指定すると、塗りつぶしパターンが追加されます。
  • ODS GRAPHICS / ATTRPRIORITY=NONE」は以下のリンク記事で詳細を解説しています。
  • https://sas-boubi.blogspot.com/2019/12/sg.html




さらに、もっと見やすくしてみます。

ods graphics / attrpriority=none;
proc sgplot data=sashelp.class;
    styleattrs datafillpatterns=(L3 X3 R3 L5 X5 R5);
    vbar age / stat=percent group=age fillpattern;
run;



  • STYLEATTRステートメント」で塗りつぶしパターンの種類を設定しています。
  • 塗りつぶしパターンには「L1~L5」「R1~R5」「X1~X5」が設定できます。




この塗りつぶしパターンを設定するメリットは、

  • カラーだけに依存していない。
  • 白黒印刷しても、塗りつぶしパターンからグループを区別することができる。
  • 色覚障害のかたによりAccessibilityな出力を提供できる。