今回は以下2つの記事に関連した内容です。
FIRSTOBS=, OBS=, WHERE を組み合わせたときの挙動
行削除の落とし穴
では本題。まずは適当にサンプルデータ。
data dt1; do x="a","b","c"; output; end; run; |
1行目をSQLプロシジャで削除してみます。
proc sql; delete from dt1 where x="a"; quit; |
すると、削除したオブザベーション番号の「1」が欠番になってしまいます。
これは上の方で示した2個目のリンク記事で紹介済みですね。
この使用できるオブザベーションが歯抜けになってしまう事で、FIRSTOBS=オプションも影響を受けてしまうようです。
たとえば「FIRSTOBS=2」として読み込んだ場合、、
proc print data=dt1 (firstobs=2); run; |
「x="c"」だけがprintされないとおかしいですよね。
SETしなおせば歯抜けが直るんで、想定通りになります。
data dt1; set dt1; run; proc print data=dt1 (firstobs=2); run; |
0 件のコメント:
コメントを投稿