关于循环结构,常见的有三种类型
注意事项:完整的DO语句以END作为整个DO语句的结尾,待执行的语句在DO与END语句中间
常见的DO语句有以下几种
do month='JAN','FEB','MAR';
do count=2,3,5,7,11,13,17;
do i=5;
do i=var1, var2, var3;
do i=1 to 10;
do i=1 to exit;
do i=1 to x-5;
do i=1 to k-1, k+1 to n;
do i=k+1 to n-1;
do i=n to 1 by -1;
do i=1 to 10 by 1, ;
do count=2 to 8 by 2;
do i=2 to 20 by 2 until((x/3)>y);
俗话说得好——Talk is cheap,show me your code !
举个例子看看
图中的DO循环意为:起始值为1,停止值为9,步长0.5,当且仅当 i < 4时执行循环
其中output语句意为在每次 i 与 x的迭代之前,将其输出到数据集中作为一个观测(对象),循环一共执行了六次,所以x与i被输出了六次。
UNTIL 以及 WHILE的作用在上图可见一斑,接下来仔细解释以上二者
关于DO UNTIL的特点如下:
关于DO WHILE的特点如下:
注: 这里需要注意的是UNTIL与WHILE的检查条件的时机——UNTIL为结束后、WHILE为结束前,如上述两个例子中,当n累加到4并准备进入下一个循环时
UNTIL会在n+1后进行检查条件(n>=5),故UNTIL输出到4即截止,此时循环结束后n=5未被输出到数据集中。
而在WHILE循环中,n=4进入循环时首先接受一次检查,输出n=4后n+1,再次检查条件(n<=5)为真,即能进入循环并输出n=5,此时循环结束后n=6未被输出到数据集中(output在n+1前)
SAS程序中的循环结构通常为以下句式:
IF expression THEN statement;
<ELSEstatement;>
其中 expression
指代判断条件,statement
指代执行语句,可以是一句或者由DO-END结构所包围的执行语句
ELSE及其之后的执行语句可以不存在。
举个例子:
解释一下:Input语句指示程序连续读取cards后的数据作为x的变量值,每次读取时执行下列语:判断x是否大于五,如果是就输出y变量(x的平方)。判断结束后输出z变量(x+3),put语句为提示将x与y的值输出到LOG窗口中
注意事项:IF后的判断语句可以是一个判断句或者是多个由逻辑词链接的判断句组成的判断句(如:if status='OK' and type=3 then count+1
)
此外,IF语句还有选择观测(对象)的作用,通常用于SET语句后。因为此部分不属于严格意义上的判断结构,个人将其理解为对数据的选择,所以不在此章多讲。关于此部分内容(数据的分割、筛选等等)我会在下一节仔细讲述。
下节再见,这次我不会鸽了
本文发布于:2024-01-29 08:15:35,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170648734013921.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |