楼主: 志明君.
4460 3

[问答] 有关SAS BASE 70题中的35和21题。请大家帮忙。 [推广有奖]

  • 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 论坛币

首先附上原题和C大神的解释。
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. 6Answer: 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题这些题的时候感觉难度很大,陷阱很多,错误率很高,有点慌。想请问考过的朋友,这是正常的么?真正的考试难度跟这些题比如何?


感激不尽。


二维码

扫码加我 拉你入群

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

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

关键词:SAS base Base observations observation Equipment following result

沙发
pobel 在职认证  发表于 2013-11-13 13:56:16 |只看作者 |坛友微信交流群
IF语句和IF...THEN...语句是有区别的。
IF语句中的条件不满足的时候,SAS会直接跳过这个data步循环(_n_)后面的所有语句。
IF...THEN...语句中的条件不满足时,只是THEN后面的语句不执行,而接下来的语句还会正常执行。

data test;
   do i=1 to 5;
      if i<3;
          j+1;
          put i=;
   end;
   put j=;
run;

data test1;
  do i=1 to 5;
     if i<3 then j+1;
         put i=;
  end;
  put j=;
run;
和谐拯救危机

使用道具

藤椅
志明君. 发表于 2013-11-13 14:06:25 |只看作者 |坛友微信交流群
pobel 发表于 2013-11-13 13:56
IF语句和IF...THEN...语句是有区别的。
IF语句中的条件不满足的时候,SAS会直接跳过这个data步循环(_n_) ...
我就猜是这样,但是不确定!
顿悟了,感激不尽。

使用道具

板凳
LaDy_Gaby 学生认证  发表于 2016-4-16 16:49:33 |只看作者 |坛友微信交流群
一下是从sas base guide复制来的,即当阅读sas data set的时候pdv不会被重新设置为missing,希望有帮助:

When reading variables from raw data, SAS sets the value of each variable in the DATA step to missing at
the beginning of each cycle of execution, with these exceptions:
• variables that are named in a RETAIN statement
• variables that are created in a sum statement
• data elements in a _TEMPORARY_ array
• any variables that are created with options in the FILE or INFILE statements
• automatic variables.
In contrast, when reading variables from a SAS data set, SAS sets the values to missing only before the
first cycle of execution of the DATA step. Therefore, the variables retain their values until new values
become available (for example, through an assignment statement or through the next execution of a SET or
MERGE statement). Variables that are created with options in the SET or MERGE statements also retain
their values from one cycle of execution to the next. (You learn about reading SAS data sets, working with
arrays, and using the SET and MERGE statements in later chapters.)

使用道具

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

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

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

GMT+8, 2024-4-28 01:19