【SAS/プログラミング】Output~いつだって登場するのに格好は気にするものさ
今回はoutputステートメントです。
あまり他のプログラムでも見ないと思われるSASのoutput事情について
取り扱っていきたいと思います。
タイトルはちょっとキザすぎましたかね、あまり気にしないでください笑
◎サンプルデータ(samp_data001)
1.隠れているoutputステートメント
/* sample code */
/* dt01データセット */
Data dt01;
Set samp_data001;
Run;
/* dt02データセット */
Data dt02;
Set samp_data001;
Output;
Run;
実行結果として、dt01とdt02のデータセットは同じとなります。
サンプルデータセット(samp_data001)の内容でdt01、dt02にそれぞれコピーしたイメージです。
本来はoutputを入れることでデータの出力がされるのですが、
実はdt01の「run;」の前に隠れoutputがデフォルトで入っております。
実際作業で使用するのは、省略した形(dt01の方)で書きます。
2.outputステートメントを記述する時とは
では、いつoutputステートメントを記述する時があるのでしょうか。
以下の場合があります。
1.条件によって出力内容を変える場合
/* program 03 */
Data dt03;
Set samp_data001;
If type=1 then output;
Run;
<実行結果>
上記のとおり記載するとtype=1の条件にあった行のみ出力されます。
これで出力させたい行のみにできます。
2. 1つの行で複数行出力したい場合
構文(data ~ run;)の途中までの処理を出力したい場合などに使用します。
/* program 04 */
Data dt04;
Set samp_data01;
If type=1 then output;
Score=99; output;
Run;
<実行結果>
上記のように記載すると、
まず"type=1"の条件にあった行はそのまま出力します。
その後、Scoreの値を「99」にした値を出力します。
つまり"type=1”の条件にある行は値を変えて複数出力されます。
なお"type=1"以外の行は、Scoreの値を「99」にして出力されます。
行が増えましたねー笑
3.注意点とまとめ
気をつけたい点として、outputを記載してしまうと、隠れているoutputは消えてしまいますので、ご注意を!
サンプル2プログラムのとおり、
『If type=1 then output;』とoutputを記載した場合、outputはここでの出力のみとなります。隠れているoutput以外でも記載しているoutputもよく確認して使いましょう!
いつだって見直し大事!!笑