楼主: berry_li
1115 1

[问答] 程序问题汇总 [推广有奖]

  • 2关注
  • 0粉丝

高中生

40%

还不是VIP/贵宾

-

威望
0
论坛币
89 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
216 点
帖子
23
精华
0
在线时间
29 小时
注册时间
2014-11-27
最后登录
2015-10-11

楼主
berry_li 发表于 2014-12-12 12:18:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
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),我觉得这样才达到目的。
有一种可能是它写在这里只是为了说明其他问题,而不是我猜测的那个逻辑。


二维码

扫码加我 拉你入群

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

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

关键词:问题汇总 Programming Prep Guide prep guid Payroll until

沙发
Tigflanker 发表于 2014-12-12 13:31:36
我认为你说的是对的。

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

最后得到do until中sales.budget的所有变量的末次观测值,存到PDV中并retain下来。
如果后面的语句有相同变量的重定义,再拿来更新之。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
berry_li + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 02:06