簡體   English   中英

在 SAS 中執行 while 循環

[英]Do while loop in SAS

我指的是SAS 文檔頁面,以了解SASDO whileDO 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM