サンプルデータ
data DT1;
length A $30.;
delete;
run;
A
|
---|
やりたい事
上記のようにデータセットが0オブザベーションだったら、「該当データなし」みたいな値を入れた行を追加したい。
A
|
---|
該当データなし |
解決案
(プログラム中の「NOBS=オプション」は正しく動かない状況もあるので、下の各リンク記事も要確認!)
data OUT1; length A $30.; if _OBS=0 then do; A = "該当データなし"; output; end; set DT1 nobs=_OBS; output; run;
|
0オブザベーション以外の時は「該当データなし」の行は追加されません。
解説
以下リンク記事を読んでいただくと8割がた上記処理の理解につながると思います。
・ NOBS=オプションの性質 【オブザベーション数の取得】
・ 暗黙のOUTPUTステートメント
補足すると、SETするデータセットが0OBSの場合、SETステートメントの後にどんな処理を入れても作成されるデータセットも0OBSとなってしまいます。(データステップの性質上)
なので、0OBSにされる前に、先に青字のプログラムで「該当データなし」の行をOUTPUTしてから、最後にSETステートメントを実行するようにしています。 なんかパズルみたいですね。
なので、0OBSにされる前に、先に青字のプログラムで「該当データなし」の行をOUTPUTしてから、最後にSETステートメントを実行するようにしています。 なんかパズルみたいですね。
NOBSの注意事項
行削除の落とし穴
しびれます!
返信削除しびれました!
返信削除匿名2名様
返信削除しびれていただいて、ありがとうございます!
GOOD!!!
返信削除THANK YOU!!!
削除