楼主: 吐丝结茧
2610 6

[问答] sas base 70题的第53题疑问? [推广有奖]

  • 1关注
  • 0粉丝

大专生

85%

还不是VIP/贵宾

-

威望
0
论坛币
67 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
534 点
帖子
28
精华
0
在线时间
78 小时
注册时间
2015-1-21
最后登录
2018-12-18

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

sas base 70题的第53题原题如下:


The following SAS program is submitted:

  data WORK.TOTAL_SALARY;

     retain Total;

     set WORK.SALARY;

     by Department;

     ifFirst.Department

       then Total=0;

     Total=sum(Total,Wagerate);

     if Last.Total;

  run;

What is the initial value of the variableTotal?

A. 0

B. Missing

C. The value of the first observationsWagerate

D. Cannot be determined from theinformation given

答案:B


答案应该怎么解读?

这里面是因为by 的变量是department,所以last.total的值是miss,是这样吗?


二维码

扫码加我 拉你入群

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

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

关键词:SAS base Base observations observation information

沙发
shuangyi_cao 发表于 2018-10-10 13:39:32 |只看作者 |坛友微信交流群
注意变量Total在最开始的时候被retain了,retain语句如果最开始没有被指定initial value那么默认值为缺失值missing 捕获.PNG

已有 1 人评分热心指数 收起 理由
吐丝结茧 + 1 请补充内容

总评分: 热心指数 + 1   查看全部评分

使用道具

藤椅
吐丝结茧 发表于 2018-10-10 14:47:39 |只看作者 |坛友微信交流群
shuangyi_cao 发表于 2018-10-10 13:39
注意变量Total在最开始的时候被retain了,retain语句如果最开始没有被指定initial value那么默认值为缺失值 ...
是的,看到total开始被retain了,只是在编译过程中被赋缺失值,但是后面有total的sum,值不是也会改变?
主要是最后那个last.total,total没有被by,值是不是也是missing?

不好意思,我是菜鸟,感谢指导!!!

使用道具

板凳
shuangyi_cao 发表于 2018-10-11 13:16:13 |只看作者 |坛友微信交流群
吐丝结茧 发表于 2018-10-10 14:47
是的,看到total开始被retain了,只是在编译过程中被赋缺失值,但是后面有total的sum,值不是也会改变?
...
题目里问的是Total的初始值是什么,所以答案是选missing,这题主要考的就是retain语句如果不被赋予初始值的情况下的初始值为missing的考点。
题目里对程序的理解: 读取WORK.SALARY数据集里的数据并按department排序,如果当前读取的观测是每个department里的第一条观测,那么给变量total赋值为0,之后每执行下一条在同一个department里观测的时候因为total的值被保留了,所以每一条观测的total值等于当时total的值+此条观测Wagerate的值,最后if Last.Total;相当于if Last.Total=1,只输出每个department里最后的total的值,接下来到下一个department里面的第一条观测,total又为0,以此类推,所以total算的是每个department里wagerate的总和。
希望可以帮到你。
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
吐丝结茧 + 1 + 1 + 1 好的意见建议
admin_kefu + 30 + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

使用道具

报纸
吐丝结茧 发表于 2018-10-11 23:09:15 |只看作者 |坛友微信交流群
太感谢了!
说实话,我是没看到问题里的“What is the initial value of the variableTotal?”,问的是初始值……
另外,还有个问题跟您请教,题目中的Last.Total值是缺失吗?还是0或1?我记得set...by...可以建立index,给first.total和last.total赋值,本题里并没有by total,所以结果也应该是missing吧?

使用道具

地板
吐丝结茧 发表于 2018-10-11 23:10:20 |只看作者 |坛友微信交流群
shuangyi_cao 发表于 2018-10-11 13:16
题目里问的是Total的初始值是什么,所以答案是选missing,这题主要考的就是retain语句如果不被赋予初始值 ...
太感谢了!
说实话,我是没看到问题里的“What is the initial value of the variableTotal?”,问的是初始值……
另外,还有个问题跟您请教,题目中的Last.Total值是缺失吗?还是0或1?我记得set...by...可以建立index,给first.total和last.total赋值,本题里并没有by total,所以结果也应该是missing吧?

使用道具

7
shuangyi_cao 发表于 2018-10-12 16:54:19 |只看作者 |坛友微信交流群
吐丝结茧 发表于 2018-10-11 23:10
太感谢了!
说实话,我是没看到问题里的“What is the initial value of the variableTotal?”,问的是 ...
first.Total和Last.Total分别表示total的第一个值和最后一个值,这俩都只有是或者不是两种可能,是的话值就为1,不是的话值就为0,if语句的话相当于一个判断,if first.Total 默认就是问如果是Total的第一个值的话则继续接下来的程序,否则就不执行,这里的话如果是就给Total赋值为0,像我之前解释的那样,在接下来同department里的观测每次都会算出一个当前的total值(假如department1里有5个观测,wagerate都为2,那么total的值就分别为2,4,6,8,10),但是因为最后有个if Last.Total,只有是这个department里面最后一个Total的值(10)才会被输出到结果中其余的都不输出,total算的是每个department里wagerate的总和。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin + 100 + 3 + 5 + 3 精彩帖子

总评分: 论坛币 + 100  学术水平 + 3  热心指数 + 5  信用等级 + 3   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 21:57