全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1098 5
2014-02-26
data a;
   input a b c @@;
   do x=1 to 5;
   ax=a*x;
   if ax>b then return;
   output;
   end;
   cards;
1 2 3 2 6 8
   ;
run;
菜鸟求问:为什么这里有output的时候输出的是5个观测,而没有output的时候只输出2个观测??是不是我对sas对数据的处理过程太不懂了??求大神指点,多谢!!

二维码

扫码加我 拉你入群

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

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

全部回复
2014-2-26 21:48:27
我只知道用output时,sas会把每一次DO的值都保留;
而不用,则每一次do的值会被下一次清除;最后当run运行时,才呈现出来。
二维码

扫码加我 拉你入群

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

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

2014-2-26 21:59:41
因为你有一个do end 循环。
有output:
1、PDV读入a b c=1 2 3;
2、x=1 ax=1 不满足return, 从PDV output a b c x ax=1 2 3 1 1;
3、x=1 ax=2 不满足return, 从PDV output a b c x ax=1 2 3 2 2;
4、x=3 ax=3 满足return.
5、PDV读入 a b c =2 6 8,
……
最终的输出为  
a b c x ax
1 2 3 1 1
1 2 3 1 2
2 6 8 1 2
2 6 8 2 4
2 6 8 2 6

没有output:
1、PDV读入a b c=1 2 3;
2、x=1 ax=1 不满足return,
3、x=1 ax=2 不满足return,
4、x=3 ax=3 满足return,从PDV output a b c x ax=1 2 3 3 3;
5、PDV读入 a b c =2 6 8,
……
最终的输出为  
a b c x ax
1 2 3 3 3
2 6 8 4 8


                    
二维码

扫码加我 拉你入群

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

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

2014-2-26 22:44:54
Bluewater1111 发表于 2014-2-26 21:59
因为你有一个do end 循环。
有output:
1、PDV读入a b c=1 2 3;
哦~我好像懂了,也就是说:这段程序中,当存在output时,输出的是不满足return的数据;而不存在output的时候,输出的是满足return的数据,并且在输出第一条满足return的数据时,已经return了,已经跳出do循环了,pdv开始读取下一个a b c的数据了,所以对应的一组a b c的值最多只能输出1条观测~~谢谢您,实在是太谢谢您了[em23]~~
二维码

扫码加我 拉你入群

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

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

2014-2-26 22:47:58
wallyone 发表于 2014-2-26 21:48
我只知道用output时,sas会把每一次DO的值都保留;
而不用,则每一次do的值会被下一次清除;最后当run运行 ...
谢谢您~您对do语句的讲解我记下了~~谢谢谢谢~~~~
二维码

扫码加我 拉你入群

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

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

2014-2-27 10:45:58
学习了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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