全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3033 4
2013-03-01
求助:

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


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


二维码

扫码加我 拉你入群

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

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

全部回复
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后面,结果就会完全不同,你自己可以试下。
二维码

扫码加我 拉你入群

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

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

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?

求教!谢谢!




二维码

扫码加我 拉你入群

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

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

2013-3-1 20:28:38
第二种情况下, output语句还在month=12的loop内.
二维码

扫码加我 拉你入群

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

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

2013-3-1 21:21:06
PhoenixHuang 发表于 2013-3-1 20:28
第二种情况下, output语句还在month=12的loop内.
第二种情况  month=13的时候直接被跳出了,没有执行do和end之间的部分,是这样吗?

大概明白了,谢谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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