全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2524 3
2010-11-12
35.given the SAS data set SASDATA.TWO:

  X  Y
  -- --
  5  2
  3  1
  5  6

The following SAS program is submitted:
  data SASUSER.ONE  SASUSER.TWO  OTHER;
     set SASDATA.TWO;
     if X eq 5 then output SASUSER.ONE;
     if Y lt 5 then output SASUSER.TWO;
     output;
  run;
What is the result?
     A.
data set SASUSER.ONE has 5 observations   
data set SASUSER.TWO has 5 observations
data set WORK.OTHER  has 3 observations

     B.
data set SASUSER.ONE has 2 observations   
data set SASUSER.TWO has 2 observations
data set WORK.OTHER  has 1 observations

     C.
data set SASUSER.ONE has 2 observations   
data set SASUSER.TWO has 2 observations
data set WORK.OTHER  has 5 observations

     D. No data sets are output. The DATA step fails execution due to syntax errors.
Answer: A
本文属于博客:http://crackman.net/版权归作者所有,欢迎转载!如有转载,请务必注明出处!未经本文作者同意
不得用于商业应用。
这道题是一个非常有意思的题。
其实考察的就是两个output语句对数据输出的影响。
下面对数据的执行过程进行解析:
程序编译之后,建立了PDV。
当从数据集SASDATA.TWO中读入第一条数据,
开始IF判断,判断为真就是OUTPUT到SASUSER.ONE数据集中。但是这里没有交代如果为假将会怎么样。我个人认为即使是假,也不会做
任何处理。因为没有在假这个条件下的执行语句。
继续判断,如果Y lt 5 then output SASUSER.TWO;
记住一个点,也是PDV中,一条观测的在PDV中存在周期问题,如果OUTPUT出去了,是不是PDV中这一条数据就立即消失,全部为默认值
了?这里就是关键所在,我个人觉得这个时候PDV没有中新的SET SASDATA.TWO或者INPUT时候,PDV应该是保留上次的值。那么到了
OUTPUT语句时,其实默认输出到三个数据集中。
所以导致5 2 这条观测以及5 6 这条被输出两次到SASUSER.ONE,加上3 1这一条是通过最后一条OUTPUT语句输出的,所以就是5条。
同样SASUSER.TWO也是5条 OTHER是3条
二维码

扫码加我 拉你入群

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

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

全部回复
2010-11-12 12:15:44
版主开始做认证试题了,很不错的解释。谢谢。
二维码

扫码加我 拉你入群

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

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

2010-11-12 12:37:08
学习了。
一点疑问:
“程序编译之后,建立了PDV,此时是三个PDV。”
3个?如果方便,能稍作释疑吗。若干年前侥幸通过sas考试,真没有想过现在的试题这么难啊。还要挖地三尺,考pdv的知识。
二维码

扫码加我 拉你入群

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

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

2010-11-12 14:40:12
写错了
是一个PDV
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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