do i=1 to ○○ until();のようにdo toループとuntilやwhileが併用できることを今まで知らなくてとても悲しかった話

とてもショックです。

data A1;
X=20;
 do i=1 to 99 until (X=40);
  X+2;
 output;
end;
run;

99回ループする。ただし途中終了条件としてX=40になれば終了する。
この処理を上記のコードでかけるのです。
こんな単純な書き方なのに気づきませんでした。ショックです。悲しいです。

以前は以下のように書いていました。

data A2;
X=20;
 do until(i=99 or X=40);
  X+2;
  i+1;
 output;
end;
run;

最近、leaveステートメントを知って、その時もショックでしたが、
以来、以下のように書けるようになりました。

data A3;
X=20;
 do i=1 to 99;
  X+2;
  output;
  if X=40 then leave;
end;
run;

SASのデータステップの知識の全てを100としたら、多分そのうち理解できている部分は
1以下だろうと思い知りました。

性根を叩き直して勉強しなおします






0 件のコメント:

コメントを投稿