例えば、univariateプロシジャを実行すると色々な統計量が出力されます。
この出力から必要なものだけに絞って出力する方法の紹介です。
①まずは「ODS TRACE」で出力オブジェクトの名前を調べる
ログに出てきた「名前」のところにあるキーワードを覚えておきましょう。
たとえば今回出力したいのが「モーメント」と「基本統計量」であれば、「Moments」と「BasicsMeasures」という名前を覚えておきます。
②「ODS SELECT」で集計結果を絞る(注意点あり)
今度は集計プロシジャを「ods select 名前;」 と 「ods select all;」で囲い直します。
名前のところに先ほどのキーワード「Moments」「BasicsMeasures」を当てはめます。
実行すると上の通り、見事欲しい結果だけ出力することが出来ました。
📝 注意点①
2つのunivariateプロシジャに対して「Moments」と「BasicMeasures」のみ出力したい場合、以下の書き方はNG
* NG: ダメな書き方 ; ods select Moments BasicMeasures; proc univariate data=sashelp.class; var age; run; proc univariate data=sashelp.class; var height; run; ods select all; |
実行してみると分かりますが、
ods selectで設定した「Moments」「BasicMeasures」は、1個目のunivariateプロシジャにしか適用されていません。
以下のようにプロシジャ毎にods selectを書く必要があります。
* OK ; ods select Moments BasicMeasures; proc univariate data=sashelp.class; var age; run; ods select all; proc univariate data=sashelp.class; var height; run; ods select all; |
📝 注意点②
以下のプログラムを実行するとWARNINGが出て、うまくいきません。
何故でしょうか?
* NG: ダメな書き方 ; proc reg data=sashelp.class; model height = age; run; ods select Moments BasicMeasures; proc univariate data=sashelp.class; var age; run; ods select all; ログ WARNING: 出力'Moments'は作成されていません。出力オブジェクト名、ラベル、 パスが正しく記述されているかを確認してください。また、 要求した出力オブジェクトを作成するために、適切なプロシジャオプションが使われ ているかも確認してください。たとえば、 NOPRINTオプションが使われていないことを確認してください。 WARNING: プロシジャステートメントの終わりを検出したので、 現在のODS SELECT/EXCLUDE/OUTPUTステートメントをクリアしました。 対話型プロシジャ(終了するにはquit;をタイプします)が終了していないかもしれません。 |
これは対話型プロシジャを使う場合に起こる落とし穴です。
(対話型プロシジャについては、「RUNとQUITの違い」をご覧ください。)
今回の例で使用しているregプロシジャは対話型プロシジャです。
「quit;」と書くか、別のdataステップ・procステップが現れるまで、regプロシジャは起動したままになります。
なので、起動したままのregプロシジャに対して、ods selectが適用されてしまい、おかしな結果になってしまったわけです。
(対話型プロシジャについては、「RUNとQUITの違い」をご覧ください。)
今回の例で使用しているregプロシジャは対話型プロシジャです。
「quit;」と書くか、別のdataステップ・procステップが現れるまで、regプロシジャは起動したままになります。
なので、起動したままのregプロシジャに対して、ods selectが適用されてしまい、おかしな結果になってしまったわけです。
この場合「quit;」を入れるだけで解決です。
* OK ; proc reg data=sashelp.class; model height = age; run; quit; ods select Moments BasicMeasures; proc univariate data=sashelp.class; var age; run; ods select all; |
📝 注意点③
ごくごく一部のプロシジャ(gplotプロシジャ等)は、実行する度にods traceで得られる出力オブジェクトの名前が変わるので注意!
0 件のコメント:
コメントを投稿