医療統計学を学ぶ大学生のブログ

医療統計学、因果推論を専攻しています。R, SASユーザーです。

SASによる解析:ODSを用いたプロシジャの出力結果の保存

個人的な研究でSASのプロシジャを用いた解析のアウトプットの一部をデータセットとして使いたいタイミングがあり、その方法について初めて知ったので後学のためにも具体例とともに簡単にまとめます。

 

ODSについて

あるプロシジャによる解析のアウトプットをデータセットとして保存するために今回利用するのは、ODS(Output Delivery System)というものです。このODSというものは、出力結果をhtmlファイルやwordファイルへ出力したり、プロシジャの出力をコントロールする際に使われます。

 

出力結果をファイルに保存する方法

出力結果をファイルに出力するには次のように、保存したい解析部分の命令の前後をODSステートメントで挟みます。

 

f:id:NorihiroSuzuki:20210909142814p:plain

このステートメントで指定できるファイルには、PDFやword、htmlなど様々なものがあり、それぞれに対して圧縮やレイアウトなどのオプションがあります。もしこの辺りの操作もしたい場合には、こちらのHelpを参考にしてください。

documentation.sas.com

 

出力結果をSASデータセットに保存する方法

出力結果をSASのデータセットとして保存したい場合には、以下のステートメントを保存したい処理の冒頭にくっつけることで、保存、利用が可能になります。

 

f:id:NorihiroSuzuki:20210909143439p:plain

 

つまり手順としては2つのステップを踏む必要があります。

  1. ODS TRACEステートメントを使用して、保存したい出力結果名(ODSテーブル名)を取得
  2. ODS OUTPUTステートメントを使用して、SASデータセットに保存

これだけではわかりにくいので、具体例を示します。

 

例 一元分散分析

今回の例で使用するのは以前にも紹介したシミュレーションデータによる一元分散分析です。

norihirosuzuki.hatenablog.com

 

このシミュレートでは、以下のようなコードでデータのシミュレート、分析が行われます。

 

f:id:NorihiroSuzuki:20210909144852p:plain

 

今回の目標は、この分析の実行結果の一部である、Welchの検定結果をデータセットとして保存することとします。

f:id:NorihiroSuzuki:20210909145729p:plain

まずはこの出力したい出力結果名(ODSテーブル名)を取得するために、このアウトプットが出力される部分の前後をODS TRACEステートメントで囲います。

f:id:NorihiroSuzuki:20210909150023p:plain

 

すると、アウトプットが出力されるだけでなく、ログにODSテーブルに関する詳細が記載されます。

f:id:NorihiroSuzuki:20210909150304p:plain

これにより、出力したいODSテーブル名がWelchであることがわかりました。先ほど追加したODS TRACEステートメントを削除して今度は代わりに、ODS  OUTPUTステートメントを解析部分の冒頭に記載します。

f:id:NorihiroSuzuki:20210909150826p:plain

 

Welchの検定の結果をdf1という名前でSASデータセットとして保存しました。出力をしてみるときちんとその結果がデータセットに保存されていることがわかります。

f:id:NorihiroSuzuki:20210909150758p:plain

 

また今回は、一つの結果のみを保存しましたが複数のアウトプットを保存することも可能です。その場合にはスペース区切りで、ODSテーブル名=新規データセット名とすればOKです。(下記イメージ)

f:id:NorihiroSuzuki:20210909151312p:plain