全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7388 14
2010-09-17
为什么这段程序有只有一个observation?
data banks;
input name $ rate;
cards;
First 0.0718
Direct 0.0721
Virtual 0.0728
;
run;
data newbank;
do year=1 to 3;
set banks;
capital + 5000;
end;
run;
二维码

扫码加我 拉你入群

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

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

全部回复
2010-9-17 13:36:46
如果data步中没有output,remove,和replace语句,那么SAS只在数据步的run;的地方才会输出。

data newbank;
do year=1 to 3;
set banks;
capital + 5000;
output;
end;
run;
二维码

扫码加我 拉你入群

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

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

2010-9-17 13:44:45
2# pobel
如果不加output,你可以给讲讲这个code 执行的过程吗?谢谢。
二维码

扫码加我 拉你入群

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

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

2010-9-17 14:09:09
楼主确定do循环在set语句之外吗?
如果是这样的话,等价于全表遍历一次,并且做capital步长为5000的累加
二维码

扫码加我 拉你入群

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

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

2010-9-17 14:40:17
nirdong 发表于 2010-9-17 13:44
2# pobel
如果不加output,你可以给讲讲这个code 执行的过程吗?谢谢。
data newbank;
do year=1 to 3;
set banks;
capital + 5000;
end;
run;

如果不加output,是这样执行的:

1. year=1,读取banks的第一行,capital为5000;
2. year=2,读取banks的第二行,capital变为10000;
3. year=3,读取banks的第三行,capital变为15000;
4. year=4,跳出do循环,遇到run,将当前 year=4  name=Virtual  rate=0.0728 capital=15000 输出到newbank,并返回到数据步data newbank语句;
5. year=1,试图读取banks的数据,因为再没有可以读的记录,所以结束整个data步。

楼主是不是想要:

data newbank;
set banks;
do year=1 to 3;
     capital + 5000;
     output;
end;
run;
二维码

扫码加我 拉你入群

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

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

2010-9-17 15:27:09
4# soporaeternus 谢谢。这个是sas base里面一个题。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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