楼主: 穆瑞晨
1396 4

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

  • 0关注
  • 0粉丝

大专生

35%

还不是VIP/贵宾

-

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

楼主
穆瑞晨 发表于 2012-4-3 17:10:25 |AI写论文

+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
拉您进交流群
GMT+8, 2026-1-4 18:24