ODS OUTPUTからデータセットを作る場合に複数変数を指定したプロシジャ出力の場合に(MATCH_ALL)で変数ごとにデータセットを自動連番で分けてもらう

前の投稿に引き続きODS OUTPUTでデータセットを作る話ですが、前回の(PERSIST=PROC)と違って、今回(MATCH_ALL)については、僕はまだ実戦で使ったことはなくて、あんまりいい使いどころも見つけていません。

例えば、

data Q1;
X=1;Y=3;output;
X=4;Y=3;output;
X=6;Y=5;output;
run;







といったデータセットがあった場合

ods listing close;
ods output basicmeasures=A0;
proc univariate data=Q1;
 var X Y;
run;
ods output close;
ods listing;

とするとvarで2変数指定していますが1プロシージャの出力なので、A0の中身は当然






XとYの要約統計量が両方入ります。

しかし、今度は、1変数ずつ、データセットを分けたいけど、複数回proc univariateは書きたくないなという願望があったとします。

その場合、

ods listing close;
ods output basicmeasures(MATCH_ALL)=AA;
proc univariate data=Q1;
 var X Y;
run;
ods output close;
ods listing;

とすると

データセットAAと、AA1という2つのデータセットが作成され


















それぞれにXとYの結果が入ります。
指定した変数の数だけ、勝手に末尾に自動連番して、データセットを作成してくれます。


実戦で使ったことないのに、なんで自分はこの書き方知ってるんだろうと思って調べてみたら
2013年のSAS GLOBAL Forumの投稿で
「OUT= is on the way out. Use ODS OUTPUT instead」というPaperがあって、そこの中でのネタでした。

on the way out.、 「(1) なくなりかけて, すたれかけて.」

なかなか、きついこといいますね。面白いです。




0 件のコメント:

コメントを投稿