個人的な研究でSASのプロシジャを用いた解析のアウトプットの一部をデータセットとして使いたいタイミングがあり、その方法について初めて知ったので後学のためにも具体例とともに簡単にまとめます。
ODSについて
あるプロシジャによる解析のアウトプットをデータセットとして保存するために今回利用するのは、ODS(Output Delivery System)というものです。このODSというものは、出力結果をhtmlファイルやwordファイルへ出力したり、プロシジャの出力をコントロールする際に使われます。
出力結果をファイルに保存する方法
出力結果をファイルに出力するには次のように、保存したい解析部分の命令の前後をODSステートメントで挟みます。
このステートメントで指定できるファイルには、PDFやword、htmlなど様々なものがあり、それぞれに対して圧縮やレイアウトなどのオプションがあります。もしこの辺りの操作もしたい場合には、こちらのHelpを参考にしてください。
出力結果をSASデータセットに保存する方法
出力結果をSASのデータセットとして保存したい場合には、以下のステートメントを保存したい処理の冒頭にくっつけることで、保存、利用が可能になります。
つまり手順としては2つのステップを踏む必要があります。
これだけではわかりにくいので、具体例を示します。
例 一元分散分析
今回の例で使用するのは以前にも紹介したシミュレーションデータによる一元分散分析です。
このシミュレートでは、以下のようなコードでデータのシミュレート、分析が行われます。
今回の目標は、この分析の実行結果の一部である、Welchの検定結果をデータセットとして保存することとします。
まずはこの出力したい出力結果名(ODSテーブル名)を取得するために、このアウトプットが出力される部分の前後をODS TRACEステートメントで囲います。
すると、アウトプットが出力されるだけでなく、ログにODSテーブルに関する詳細が記載されます。
これにより、出力したいODSテーブル名がWelchであることがわかりました。先ほど追加したODS TRACEステートメントを削除して今度は代わりに、ODS OUTPUTステートメントを解析部分の冒頭に記載します。
Welchの検定の結果をdf1という名前でSASデータセットとして保存しました。出力をしてみるときちんとその結果がデータセットに保存されていることがわかります。
また今回は、一つの結果のみを保存しましたが複数のアウトプットを保存することも可能です。その場合にはスペース区切りで、ODSテーブル名=新規データセット名とすればOKです。(下記イメージ)