全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1070 1
2014-12-12
data work.combine(drop=totpay;
   if _N_=1 then do until(last);
      set sales.budget(keep=payroll) end=last;
   end;
   set sales.budget;
   Percent=payroll/totpay;
run;
以上是我在一本书(SAS Certification Prep Guide: Base Programming for SAs 9, page339)上看到的程序,我觉得有问题,我想,它的目的应该是想用budget中最后一行的payroll值与totpy计算,但前面的值已被后面的值覆盖了,这样,循环就没意义。
如果把后一个set语句加是(drop=payroll),我觉得这样才达到目的。
有一种可能是它写在这里只是为了说明其他问题,而不是我猜测的那个逻辑。


二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-12 13:31:36
我认为你说的是对的。

第一步do until是把里面的set句约束到整个data步的第一步执行中。

最后得到do until中sales.budget的所有变量的末次观测值,存到PDV中并retain下来。
如果后面的语句有相同变量的重定义,再拿来更新之。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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