楼主: zju_zd
2891 4

[问答] 【求助】 sas base 70 第66题 有关 do loop 的问题 【求助】 [推广有奖]

  • 0关注
  • 0粉丝

初中生

76%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
51 点
帖子
8
精华
0
在线时间
29 小时
注册时间
2013-2-21
最后登录
2015-6-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助:

  data xx;
   do year=1 to 5;
    do month=1 to 12;
     x+1;
    end;
    output;
   end;
  run;


输出的结果为什么month 都等于13 而不是12  ?


二维码

扫码加我 拉你入群

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

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

关键词:SAS base Base loop output month

沙发
Eternal0601 发表于 2013-3-1 18:57:30 |只看作者 |坛友微信交流群
    do month=1 to 12;
     x+1;
    end;
当month增加到12,循环继续,接着month自动加1变成13,此时不符合do month=1 to 12条件,就跳出循环,后面紧接着有output语句,就将pdv中month=13输出到外部数据集了

当output语句放到 x+1后面,结果就会完全不同,你自己可以试下。

使用道具

藤椅
zju_zd 发表于 2013-3-1 19:57:04 |只看作者 |坛友微信交流群
Eternal0601 发表于 2013-3-1 18:57
do month=1 to 12;
     x+1;
    end;
谢谢!

不过我的问题正是来源于output位置不同产生的不同的效果,,

如果是之前那样的位置,
  data xx;
   do year=1 to 5;
    do month=1 to 12;
     x+1;
    end;
    output;
   end;
  run;
结果是pdv中的month=13 输出了,

如果把output调整回正常的位置,
  data xx;
   do year=1 to 5;
    do month=1 to 12;
     x+1;
    output;
    end;
   end;
  run;

结果中并没有出现month=13 的obs,,

为什么前面的13 被output了  而后面的没有?
或者是不是因为第二种情况month 没有被加到13?

求教!谢谢!




使用道具

板凳
PhoenixHuang 发表于 2013-3-1 20:28:38 |只看作者 |坛友微信交流群
第二种情况下, output语句还在month=12的loop内.

使用道具

报纸
zju_zd 发表于 2013-3-1 21:21:06 |只看作者 |坛友微信交流群
PhoenixHuang 发表于 2013-3-1 20:28
第二种情况下, output语句还在month=12的loop内.
第二种情况  month=13的时候直接被跳出了,没有执行do和end之间的部分,是这样吗?

大概明白了,谢谢!

使用道具

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

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

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

GMT+8, 2024-4-27 17:31