SAS中文论坛
标题:
跟crakman做sas base认证试题(28)
[打印本页]
作者:
shiyiming
时间:
2010-11-12 00:19
标题:
跟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 Pop2000<br>
-------- -------<br>
Alaska 626931 <br>
Delaware 783595 <br>
Vermont 608826 <br>
Wyoming 493782 <br>
<br>
and the SAS data set WORK.P2008: <br>
<br>
State Pop2008<br>
-------- -------<br>
Alaska 686293 <br>
Delaware 873092 <br>
Wyoming 532668 <br>
<br>
The following output is desired: <br>
<br>
Obs State Pop2000 Pop2008 Difference<br>
1 Alaska 626931 686293 59362<br>
2 Delaware 783595 873092 89497<br>
3 Wyoming 493782 532668 38886<br>
<br>
Which SAS program correctly combines the data? </font></p>
<p><br>
<font size="4"> A.<br>
data compare;<br>
merge WORK.P2000(in=_a Location=State)<br>
WORK.P2008(in=_b);<br>
by State;<br>
if _a and _b;<br>
Difference=Pop2008-Pop2000; <br>
run; <br>
<br>
B.<br>
data compare;<br>
merge WORK.P2000(rename=(Location=State)) <br>
WORK.P2008; <br>
by State;<br>
if _a and _b;<br>
Difference=Pop2008-Pop2000; <br>
run; <br>
<br>
C.<br>
data compare;<br>
merge WORK.P2000(in=_a rename=(Location=State))<br>
WORK.P2008(in=_b);<br>
by State;<br>
if _a and _b;<br>
Difference=Pop2008-Pop2000; <br>
run; <br>
<br>
D.<br>
data compare;<br>
merge WORK.P2000(in=_a) (rename=(Location=State)) <br>
WORK.P2008(in=_b);<br>
by State;<br>
if _a and _b;<br>
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<(options)> <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) 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> <a href="http://hi.baidu.com/crack%5Fman/blog/item/16acc5bbfa88ce1a18d81f76.html#comment">查看评论</a>
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2