データセットオプション「FIRSTOBS=」と「OBS=」の紹介と、WHEREステートメントを組み合わせて使用した時の挙動について、まとめておきます。
データの状態によっては結果がバグる事があって、その辺の注意点については最後に別記事のリンク貼ってるので参照下さい。
Sample data
data a;
do i=1 to 10;
output;
end;
run;
|
FIRSTOBS=オプション
・処理(読込み)を開始するオブザベーションを指定できます。
proc print data=a (firstobs=3);
run;
|
OBS=オプション
・何オブザベーション目まで処理するか(読み込むか)を指定できます。
proc print data=a (obs=3);
run;
|
FIRSTOBS=, OBS=, WHERE の組み合わせ
ここから本題。以下のプログラムで結果が予測できればバッチリです。
proc print data=a (firstobs=2 obs=3);
where i>5;
run;

|
解説
・まずWHEREでオブザベーションを抽出。
・抽出したオブザベーションに対して、FIRSTOBS=とOBS=を適用。
・FISTOBS=とOBS=で共通する範囲にあるオブザベーションが処理対象となる。
以下にイメージを載せておきます。
ちなみに
SETステートメントとかでもこれらのオプションが使えます。
data b;
set a (obs=3);
run;
|
注意