SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1082|回复: 0
打印 上一主题 下一主题

跟crakman做sas base认证试题(28)

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-11-12 00:19:02 | 只看该作者

跟crakman做sas base认证试题(28)

From crackman's blog on Baidu


               
                <p><font size="4"> <br>
28.Given the SAS data set WORK.P2000: <br>
<br>
  Location&nbsp;&nbsp;&nbsp;  Pop2000<br>
  --------&nbsp;&nbsp;&nbsp;  -------<br>
  Alaska&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  626931 <br>
  Delaware&nbsp;&nbsp;&nbsp;  783595 <br>
  Vermont&nbsp;&nbsp;&nbsp;&nbsp;  608826 <br>
  Wyoming&nbsp;&nbsp;&nbsp;&nbsp;  493782 <br>
<br>
and the SAS data set WORK.P2008: <br>
<br>
  State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Pop2008<br>
  --------&nbsp;&nbsp;&nbsp;  -------<br>
  Alaska&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  686293 <br>
  Delaware&nbsp;&nbsp;&nbsp;  873092 <br>
  Wyoming&nbsp;&nbsp;&nbsp;&nbsp;  532668 <br>
<br>
The following output is desired: <br>
<br>
  Obs&nbsp;&nbsp;&nbsp;&nbsp;  State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Pop2000&nbsp;&nbsp;&nbsp;  Pop2008&nbsp;&nbsp;&nbsp;  Difference<br>
&nbsp;&nbsp;  1&nbsp;&nbsp;&nbsp;&nbsp;  Alaska&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  626931&nbsp;&nbsp;&nbsp;&nbsp;  686293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  59362<br>
&nbsp;&nbsp;  2&nbsp;&nbsp;&nbsp;&nbsp;  Delaware&nbsp;&nbsp;&nbsp;&nbsp;  783595&nbsp;&nbsp;&nbsp;&nbsp;  873092&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  89497<br>
&nbsp;&nbsp;  3&nbsp;&nbsp;&nbsp;&nbsp;  Wyoming&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  493782&nbsp;&nbsp;&nbsp;&nbsp;  532668&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  38886<br>
<br>
Which SAS program correctly combines the data? </font></p>
<p><br>
<font size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  A.<br>
data compare;<br>
  merge WORK.P2000(in=_a Location=State)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WORK.P2008(in=_b);<br>
&nbsp;&nbsp;  by State;<br>
&nbsp;&nbsp;  if _a and _b;<br>
&nbsp;&nbsp;  Difference=Pop2008-Pop2000; <br>
run; <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  B.<br>
data compare;<br>
  merge WORK.P2000(rename=(Location=State)) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WORK.P2008; <br>
&nbsp;&nbsp;  by State;<br>
&nbsp;&nbsp;  if _a and _b;<br>
&nbsp;&nbsp;  Difference=Pop2008-Pop2000; <br>
run; <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  C.<br>
data compare;<br>
  merge WORK.P2000(in=_a rename=(Location=State))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WORK.P2008(in=_b);<br>
&nbsp;&nbsp;  by State;<br>
&nbsp;&nbsp;  if _a and _b;<br>
&nbsp;&nbsp;  Difference=Pop2008-Pop2000; <br>
run; <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  D.<br>
data compare;<br>
  merge WORK.P2000(in=_a) (rename=(Location=State)) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WORK.P2008(in=_b);<br>
&nbsp;&nbsp;  by State;<br>
&nbsp;&nbsp;  if _a and _b;<br>
&nbsp;&nbsp;  Difference=Pop2008-Pop2000; <br>
run; </font></p>
<p><br>
<font size="4">Answer: C<br>
本文属于博客:</font><a href="http://hi.baidu.com/crack_man/home"><font size="4"><!-- m --><a class="postlink" href="http://hi.baidu.com/crack_man/home">http://hi.baidu.com/crack_man/home</a><!-- m --></font></a><font size="4"> 版权归作者所有,欢迎转载!如有转载,请务必注明出处!未经本文作者同意</font></p>
<p><font size="4">不得用于商业应用。</font></p>
<p><font size="4">这道题考察的是MERGE语句。<br>
首先是语法格式,MERGE date-set-name&lt;(options)&gt; <br>
D项就是OPTIONS选项分开放在两个括号内,错误<br>
对于RENAME命令应该是,rename=(oldname=newname)A出现rename错误<br>
B未知变量_a和_b;<br>
IN=_A和IN=_B,分别表示的是最终数据集中其中观测是否来自数据集WORK.P2000,标记变量为_a,是否来自数据集WORK.P2008<br>
,标记变量为_b。如果_A 和_B都为1 表示来自数据集WORK.2000和WORK.P2008,为0表示不是来自该数据集。</font></p>
<p><font size="4">下面来解释一下merge过程对数据集的操作并产生新数据集的过程。<br>
1.在开始执行数据步之前,SAS识别两个数据集的名称创建PDV,PDV包括了这两个数据集中所有的变量。<br>
WORK.P2000中的state(location)&nbsp;&nbsp;&nbsp;  Pop2000<br>
work.p2008中的POP2008。<br>
记住两个数据集中重复的变量PDV中只会出现一次。<br>
2.接着SAS寻找BY变量,STATE,在两个数据集中的都出现的第一个值,这里是alaska。<br>
3.接下来SAS从数据集P2000中读入ALASKA同一数据行中其他数据,然后继续读入ALASKA在数据集P2008同一数据行的其他数据。<br>
  读完数据之后输出到新数据集中,在DATA 步中建立的变量,_A=1 _B=1,因为BY语句中的STATE都存在两个数据集中。<br>
  这个时候PDV中的变量依然保留中的。<br>
4.继续读入BY语句中STATE第二个值,Delaware重复3的过程。<br>
5.继续读入BY语句中STATE第三个值,Vermont。此时在P2008中没有这个值,所以POP2008为缺失值。<br>
6.IF _A AND _B 等价于IF _A=1 AND _B=1 ;在SAS里面,1=true,0=FALSE,所以,_A和_B就是1 AND 1,也就是TREU AND TRUE 结果就</font></p>
<p><font size="4">是TRUE。IF这里祈起到删选数据观测的作用。</font></p>
<p> </p>
<p> </p> <a href="http://hi.baidu.com/crack%5Fman/blog/item/16acc5bbfa88ce1a18d81f76.html">阅读全文</a>
               
                <br/><b>类别:</b><a href="http://hi.baidu.com/crack%5Fman/blog/category/%B8%FAcrackman%D7%F6sas%20base%C8%CF%D6%A4%CA%D4%CC%E2">跟crackman做sas base认证试题</a>&nbsp;<a href="http://hi.baidu.com/crack%5Fman/blog/item/16acc5bbfa88ce1a18d81f76.html#comment">查看评论</a>
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 20:06 , Processed in 0.069140 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表