全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4233 10
2016-03-06
                                                                                                                                               

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

Crackman 的解释如下:

当从数据集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条


红色部分是我没有看懂的部分,能有哪位高人解释下么? 5 2 和 5 6 这两条数据为什么重复了?







                       
               

二维码

扫码加我 拉你入群

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

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

全部回复
2016-3-6 18:09:00
我觉得可以这么理解,前两个if语句分别输出符合条件的数据到对应的数据集中,每个数据集的输出是2、2、0,最后的output将SASDATA.TWO输出到三个数据集中,每个数据集的输出是3、3、3,最后的结果是5、5、3。一般情况下,PDV的数据要等一个data步循环全部结束了才清除。
二维码

扫码加我 拉你入群

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

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

2016-3-6 21:19:26
wtxhpx1991 发表于 2016-3-6 18:09
我觉得可以这么理解,前两个if语句分别输出符合条件的数据到对应的数据集中,每个数据集的输出是2、2、0,最 ...
原来是这样,最后的一个output 是将这个data set 重新输出一遍,谢谢!
二维码

扫码加我 拉你入群

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

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

2016-3-16 22:53:23
MiSH2HK 发表于 2016-3-6 21:19
原来是这样,最后的一个output 是将这个data set 重新输出一遍,谢谢!
不好意思,如果将output 改成else output others; 为什么others 里还有一个observation?
二维码

扫码加我 拉你入群

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

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

2016-3-17 02:54:54
最新考题中,这个题目变化了。请一定注意细节。答案部分我记不清楚了。

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;
      else output other;
   run;

What is the result?
二维码

扫码加我 拉你入群

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

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

2016-3-17 21:33:01
datatools 发表于 2016-3-17 02:54
最新考题中,这个题目变化了。请一定注意细节。答案部分我记不清楚了。

given the SAS data set SASDATA ...
我知道滴,所以我就想知道 为什么加了一个 else 答案就一样了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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