[英]Do while loop in SAS
我指的是SAS 文檔頁面,以了解SAS
中DO while
和DO until
循環之間的區別。 在參考這篇文檔時,我得出一個結論,每當我使用 DO while 循環時,while 語句的不等式應該總是小於(或小於或等於)。 不等式不能大於(或大於或等於)。
原因如下。 當我運行這段代碼時:
data _null_;
n=0;
do while(n<5);
put n=;
n+1;
end;
run;
我得到 output 作為0,1,2,3,4.
但是當我運行這段代碼時,我什么也沒得到。
data _null_;
n=0;
do while(n>5);
put n=;
n+1;
end;
run;
我的結論是正確的,還是我遺漏了什么?
謝謝1 :
您是否使用 > 或 < 並不是真的。 但是測試什么的邏輯是相反的。 使用 DO WHILE(),您可以在條件為真時執行循環。 使用 DO UNTIL() 當條件為 FALSE 時您繼續執行。
11 data _null_;
12 do while(n<5);
13 put n @;
14 n+1;
15 end;
16 run;
0 1 2 3 4
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
17 data _null_;
18 do until(n>=5);
19 put n @;
20 n+1;
21 end;
22 run;
0 1 2 3 4
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
另一個很大的區別是進行測試的時間。 使用 DO WHILE() 時,測試在循環開始之前進行。 使用 DO UNTIL() 它是在循環完成之后。 所以使用 DO UNTIL() 代碼總是至少執行一次。
請注意,使用迭代 DO 循環更容易完成您的示例。
6 data _null_;
7 do n=0 to 4;
8 put n @;
9 end;
10 run;
0 1 2 3 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.