全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1353 4
2012-04-03
各位大神,小弟我在学习DO语句时,对循环控制变量比较的疑惑,例如:
data a;
do i=1 to 50 by 1;y=0;
do j=1 to 5;
z=normal(0);
y=y+z*z;
end;
output;
end;
proc print;
run;

最后打印出来的 i  最大为50,我能理解,可为什么 j  全都是6呢?它已经超过5了啊?

谢谢大家!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-3 17:41:00
data a;
    do i=1 to 50 by 1;y=0;
         do j=1 to 5;
             z=normal(0);
             y=y+z*z;
        end;
       output;
   end;
proc print;
run;

因为你在第二层循环的时候,每次都要输出z和y,此时j不断增加,当等于六时,才跳出循环,所以j=6
二维码

扫码加我 拉你入群

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

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

2012-4-3 17:49:47
谢谢您专业的回答,我再问您一下,那是不是 i=51 时才跳出第一层循环,那这时显示的 i 也应该是51而不是50啊?
给您添麻烦了,^_^
二维码

扫码加我 拉你入群

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

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

2012-4-3 18:25:16
穆瑞晨 发表于 2012-4-3 17:49
谢谢您专业的回答,我再问您一下,那是不是 i=51 时才跳出第一层循环,那这时显示的 i 也应该是51而不是50啊 ...
第一层循环结束后,j=6。因为有OUTPUT;所以可以看到j值为6.
第二层循环结束后,i=51。但后面无OUTPUT,所以只到50.

想要看到你要的结果,可以试试下面的CODE.
复制代码
二维码

扫码加我 拉你入群

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

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

2012-4-3 19:45:10
明白了,非常感谢您的帮忙,^_^
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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