SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2812|回复: 7
打印 上一主题 下一主题

DO循环问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 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?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 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写入数据集。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-12-18 10:02:50 | 只看该作者

Re: DO循环问题

good point.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2012-12-20 23:14:31 | 只看该作者

Re: DO循环问题

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

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2012-12-20 23:15:34 | 只看该作者

Re: DO循环问题

你自己在END 之加个OUTPUT 就是你想要的结果了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2013-1-6 23:59:56 | 只看该作者

Re: DO循环问题

[quote="houzm13":tc3r7pxv]你自己在END 之加个OUTPUT 就是你想要的结果了。[/quote:tc3r7pxv]
to be more accurate, adding the output before the RUN;
回复 支持 反对

使用道具 举报

8

主题

25

帖子

118

积分

超级版主

Rank: 8Rank: 8

积分
118
7#
发表于 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,未定义 ...

回复 支持 反对

使用道具 举报

2

主题

13

帖子

40

积分

新手上路

Rank: 1

积分
40
8#
发表于 2016-5-17 05:28:40 | 只看该作者
类似题目本人在找工笔试中曾经遇见过,本人觉得这种题不是很有意思,因为实际编程时都会在END之前加上output; 或者加上if i=5 then output;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-4-20 08:38 , Processed in 0.217789 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表