shiyiming 发表于 2012-12-17 15:54:52

DO循环问题

data a;
do i=1 to 5;
x=i+1;
put i=;put x=;

end;
run;

结果:i=1
x=2
i=2
x=3
i=3
x=4
i=4
x=5
i=5
x=6

但是数据集里面是i=6 x=6?

shiyiming 发表于 2012-12-17 21:43:04

Re: DO循环问题

当循环至i=5时,x=5+1=6,put i=5,x=6至log,此时i=6,因为每次do loop结束前index=index+increment,未定义increment时,默认为1,即i=5+1,然后i=6返回do语句,而此时的i超出了i的取值范围,故循环不运行,直接end,然后run,即Implied output,将i=6,x=6写入数据集。

shiyiming 发表于 2012-12-18 10:02:50

Re: DO循环问题

good point.

shiyiming 发表于 2012-12-20 23:14:31

Re: DO循环问题

简单点说就是在END之后才会运行SAS 数据自带的OUTPUT,才会有i=6 x=6输出到数据集中

shiyiming 发表于 2012-12-20 23:15:34

Re: DO循环问题

你自己在END 之加个OUTPUT 就是你想要的结果了。

shiyiming 发表于 2013-1-6 23:59:56

Re: DO循环问题

你自己在END 之加个OUTPUT 就是你想要的结果了。
to be more accurate, adding the output before the RUN;

Emma 发表于 2016-5-15 15:16:21

shiyiming 发表于 2012-12-17 21:43
当循环至i=5时,x=5+1=6,put i=5,x=6至log,此时i=6,因为每次do loop结束前index=index+increment,未定义 ...

:loveliness:

BioSas 发表于 2016-5-17 05:28:40

类似题目本人在找工笔试中曾经遇见过,本人觉得这种题不是很有意思,因为实际编程时都会在END之前加上output; 或者加上if i=5 then output;
页: [1]
查看完整版本: DO循环问题