繁体   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