楼主: 穆瑞晨
1146 4

[原创博文] 请教各位大神一个关于SAS的初级问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

35%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
355 点
帖子
23
精华
0
在线时间
41 小时
注册时间
2008-9-25
最后登录
2013-12-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位大神,小弟我在学习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了啊?

谢谢大家!!!
二维码

扫码加我 拉你入群

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

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

关键词:sas的 output normal print outpu normal

沙发
wodematlab 发表于 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啊?
给您添麻烦了,^_^

使用道具

板凳
webgu 发表于 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.
  1. data a;
  2.     do i=1 to 50 by 1;y=0;
  3.          do j=1 to 5;
  4.              z=normal(0);
  5.              y=y+z*z;
  6.         end;
  7.        output;
  8.    end;
  9.    output;
  10. proc print;
  11. run;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

报纸
穆瑞晨 发表于 2012-4-3 19:45:10 |只看作者 |坛友微信交流群
明白了,非常感谢您的帮忙,^_^

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 14:00