2015年7月18日土曜日

集計結果をデータセットに出力する「ODS TRACE」と「ODS OUTPUT」




「まとめといて!」 という依頼があったので、簡単にまとめたいと思います。

サンプルデータ
data DT1;
input A;
cards;
10
20
30
;


サンプルに対してMEANSプロシジャで要約統計量を求めて、その結果をデータセットに吐き出したいとします。


①まずは「ODS TRACE」で出力オブジェクトの名前を調べる

ods trace on;
proc means data=DT1;
   var A;
run;
ods trace off;

ログ

集計プロシジャを「ods trace on;」と「ods trace off;」で囲って実行すると、ログに上のような表示が現れます。
ログに出てきた「名前」のところにあるキーワードを覚えておきましょう。上の例では「Summary」というキーワードになってますね。


②「ODS OUTPUT」で集計結果をデータセットに出力する

ods output Summary=OUT1;
proc means data=DT1;
   var A;
run;
ods output close;

結果データセットOUT1




今度は集計プロシジャを「ods output 名前 出力データセット名;」と「ods output close;」で囲い直します。
名前のところに先ほどのキーワード「Summary」を当てはめます。

実行すると上の通り、見事集計結果のデータセットが出来上がりです。


ここで注意!
  • プロシジャ側でNOPRINTオプション等で結果ビューアへの出力を抑制すると、ODS OUTPUTが使えない(データセットに出力されない)ので注意
  • 同じプロシジャでもSASのバージョンによって出力オブジェクトの名前や出力データの構造が変わってるかもしれません。別のバージョンで実行する場合、その点よく確認した方がいいです。
  • また日本語版や英語版などの違いによって、出力データセット中の格納値もその国の言語になっている場合があるので注意が必要です。

あと、たまに見かけるミスを以下記事で紹介しているので、あわせてご参照ください。



0 件のコメント:

コメントを投稿