全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2570 4
2017-12-13
执行以下一段代码:
复制代码
请问为何产生的数值不是10而是11?SAS工作的原理是怎样的?谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-12-14 18:43:29
从SAS Support Community上得到的解释如下。

DO-Loop中,遇到END会增加一个步长,然后返回DO语句,先判断是否在循环的区间内,如果是就继续,如果不是就停止。此例中,从1循环到10,到10之后继续下去碰到END,增加到11,返回到DO语句判断,不在1到10范围之内,停止循环,继而OUTPUT。因此,最后输出的值是11。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-12-14 21:32:02
data a;
   do i = 1 to 10;      
    output;
   end;
run;

proc print data=a;
run;

这样写,你就可以得到每一次迭代时的结果,最后一行是10.

                                                            Obs     i

                                                              1     1
                                                              2     2
                                                              3     3
                                                              4     4
                                                              5     5
                                                              6     6
                                                              7     7
                                                              8     8
                                                              9     9
                                                             10    10

你写的程序,其实那个output和没写一样,最后只输出一行结果
                                                            Obs     i

                                                             1     11
至于原理,简单来说,就是当这个index variable i变成11时,这个值超过了iteration do loop statement,所以迭代程序停止了,进行下一个statement.所以,print后,i是11.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-12-14 21:52:36
liuchengxin 发表于 2017-12-14 21:32
data a;
   do i = 1 to 10;      
    output;
谢谢回复。是否可以理解为DO-Loop在顶部有一个判断的动作。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-12-15 10:36:22
逍遥梦蝶 发表于 2017-12-14 21:52
谢谢回复。是否可以理解为DO-Loop在顶部有一个判断的动作。
恩,实际上,按照我的理解,SAS program执行时,都是先compile,值是先读取到program data vector里去的,然后才会到execution;
在最后一步时,i=11,loop ends.
你用“有一个判断的动作“来理解,我觉得也可以吧。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群