Windows版SASでの説明になります。
SAS Studioなど「結果ウインドウ」が存在しない環境では今回紹介する機能は動作しません。
まずは「結果ビューア」と「結果ウインドウ」を混同しないように違いの説明から。
以下を実行すると、
proc univariate data=SASHELP.CLASS; var AGE; run; |
設定によって挙動は異なりますが、
- 「結果ビューア」にHTML形式でUNIVARIATEの結果が出力されます
- 「結果ウインドウ」は画面左側などにあって、UNIVARIATEの結果に対するリンクツリーが表示されます(ちなみにSAS Studioだと結果タブにある「目次」が結果ウインドウに似ているけど別物)
詳細は以下リファレンスを参照下さい。
そして今回は「結果ウインドウ」の制御を行う「ODS RESULTSステートメント」を紹介します。
環境・設定によって挙動が違うので、Windows版SAS、かつ結果の出力先が「結果ビューア」になっている前提で説明します。
以下を実行すると、、
ods results off; proc univariate data=SASHELP.CLASS;
var AGE;
run; ods results on; |
「ODS RESULTS~」で囲ったUNIVARIATEの結果に対するリンクツリーが「結果ウインドウ」に表示されなくなります。
「ODS RESULTS OFF;」で表示を抑制し、「ODS RESULTS ON;」で表示するように戻しています。
利点①
プログラムを長時間実行する場合などに、「結果ウインドウ」への表示を抑制することで、プログラムの実行時間が格段に早くなる場合がある。
利点②
「結果ウインドウ」だけでなく、「結果ビューア」の表示も抑制されます。
役立つ例として、集計結果を「結果ウインドウ」や「結果ビューア」に表示させずに、データセットに出力したい場合、「ODS OUTPUT」と併用して以下のように書いたりします。
ods results off;
ods output Moments=OUT1; proc univariate data=SASHELP.CLASS; var AGE; run; ods output close; ods results on; |
参考:集計結果をデータセットに出力する「ODS TRACE」と「ODS OUTPUT」
利点の②として紹介した内容について、注意があります。
「ODS RESULTS OFF」は「結果ウインドウ」への表示を抑制させているだけで、裏ではガッツリ集計結果が作られています。
以下のプログラムを実行してみてください。
PROC FREQを「ODS RESULTS ~」で囲ってるので、
- 「結果ウインドウ」にはMEANSのツリーのみが表示されますが、
- 「結果ビューア」にはFREQとMEANS両方出力されてしまいました。
これは先ほど説明した通り、FREQは「ODS RESULTS ~」で囲っていても出力結果は裏で作られています。
なのでMEANSを実行したときに、裏で作られていたFREQの結果も一緒に出てきてしまうわけです。
0 件のコメント:
コメントを投稿