今回は、思いつきが失敗した話になります。
以前、「Create tableだけがSQLプロシジャでデータセットを作る方法ではないという話」
http://sas-tumesas.blogspot.jp/2013/10/create-tablesql.htmlでSQLプロシジャの出力をODS OUTPUTステートメントで捉えてデータセット化するという内容を紹介しました。
それで、最近ふと思ったのが、それってproc printでもできるのか?ということでした。
例えば以下のようなデータセットがあったとします。
data Q1;
do X=1 to 4;
do Y=1 to 3;
output;
end;
end;
run;
そこに
proc print data=Q1 noobs;
var Y;
id X ;
by X ;
run;
を実行すると
idステートメントとbyステートメントの同時指定の効果により
のようなアウトプットがでます。
この形をデータセットで欲しいなと思って
ods output Print=OUT;
proc print data=Q1 noobs;
var Y;
id X ;
by X ;
run;
として、実行しなおしてみると
「ERROR: PROC PRINT はODS OUTPUT」ステートメントをサポートしていません」
と見事に怒られてしましました。
悪くないアイデアだと思ったのですが、、。
ちなみに全然関係なく、id by sumbyの併用で、いかのような出力が得られ、たまに検算する時に
使います。
proc print data=Q1 noobs;
var Y;
id X;
by X ;
sumby X;
run;
こんにちは。
返信削除基本的なprintプロシジャがods output使えないのは初めて知りました。
dataステップでどうにかしろってことなんでしょうかね。
代わりにreportプロシジャ使えるかと思って試してみたら、これもうまく出来なかったです。
あとcompareプロシジャなんかもods outputで出力すると、出力自体はできても中身がおかしなことになってたりしてます。
なんか統計関連のプロシジャ以外はodsでの扱いが雑ですね。。
こんにちわ。
削除compareプロシジャ、前に僕もやってがっかりしました。平テキストを無理やり改行で区切ったような感じになってた気がします。
ods graphicsのパターン増やす前に、全プロシジャのods outputを整備して欲しいですよね