楼主: 志明君.
3132 0

[SAS初级班] 老师你好,有2道SAS题求解答,出自SAS 70题。 [推广有奖]

  • 0关注
  • 0粉丝

初中生

61%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
115 点
帖子
8
精华
0
在线时间
20 小时
注册时间
2013-10-9
最后登录
2014-6-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

首先附上原题和Crackman blog里的解释。


21.Given the SAS data set WORK.PRODUCTS:

  ProdId    Price    ProductType    Sales    Returns
  ——    —–    ———–    —–    ——-
  K12S      95.50    OUTDOOR           15          2
  B132S      2.99    CLOTHING         300         10
  R18KY2    51.99    EQUIPMENT         25          5
  3KL8BY     6.39    OUTDOOR          125         15
  DY65DW     5.60    OUTDOOR           45          5
  DGTY23    34.55    EQUIPMENT         67          2

The following SAS program is submitted:

  data WORK.OUTDOOR WORK.CLOTH WORK.EQUIP;
     set WORK.PRODUCTS;
     if Sales GT 30;
     if ProductType EQ ‘OUTDOOR’  then output WORK.OUTDOOR;
     else if ProductType EQ ‘CLOTHING’ then output WORK.CLOTH;
     else if ProductType EQ ‘EQUIPMENT’ then output WORK.EQUIP;
  run;

How many observations does the WORK.OUTDOOR data set contain?
     A. 1
     B. 2
     C. 3
     D. 6

Answer: B
本文属于博客:http://crackman.net 版权归作者所有,如有转载,请注明出处!未经本作者同意不得用于商业应用。其他本博客文章均作此声明!

其实这里考察的是IF ELSE语句以及OUTPUT语句的应用.
在这里一定要记住一个执行过程,就是通过SET每读入一条语句之后,例如第一行:“ K12S      95.50    OUTDOOR           15          2 ”
IF THEN 语句开始作出判断,IF 为真才执行THEN后面的语句,否则就是ELSE的语句操作。
具体的流程可以参考签名几个题目的解析。



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条

大部分我都能理解,现在我的问题是:按照答案分析,21题中,如果“If Sales GT 30”这个是false,那我们则跳过下面所有的"if"code,这样我们才有答案2,因为第一行数据我们是不读取进work.output的。然后我们看35题,这题如果按解释和答案的意思,就算"X eq5 then output SASUSER.ONE"这条是FALSE,我们依然要运行下面“IF Y LT 5 output then SASUSER.TWO”这行code,这不是和21题矛盾了吗。我的疑惑就是当我们有一个IF statement 是false,那接下来出现的所有IF STATEMENT需要运行么?

我很困惑,希望老师帮帮我,谢谢。

另外老师,我最近在备考SAS BASE EXAM, 读online tutor还好,后面的quiz也做得不错,但是开始做123+70+50题这些题的时候感觉难度很大,陷阱很多,错误率很高,有点慌。想请问考过,这是正常的么?真正的考试难度跟这些题比如何?


感激不尽。


二维码

扫码加我 拉你入群

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

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

关键词:求解答 observations observation Equipment statement 老师你好 blog

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

本版微信群
加好友,备注jltj
拉您入交流群

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

GMT+8, 2024-4-19 16:45