SAS中文论坛

标题: 跟crakman做sas base认证试题(35) [打印本页]

作者: shiyiming    时间: 2010-11-12 12:24
标题: 跟crakman做sas base认证试题(35)
From crackman's blog on Baidu


               
                <p><font size="4">35.given the SAS data set SASDATA.TWO:<br>
<br>
X Y<br>
-- --<br>
5 2<br>
3 1<br>
5 6<br>
<br>
The following SAS program is submitted:<br>
data SASUSER.ONE SASUSER.TWO OTHER;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  set SASDATA.TWO;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  if X eq 5 then output SASUSER.ONE;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  if Y lt 5 then output SASUSER.TWO;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  output;<br>
run;</font></p>
<p><font size="4">What is the result?</font></p>
<p><font size="4">&nbsp;&nbsp;&nbsp;&nbsp;  A.<br>
data set SASUSER.ONE has 5 observations&nbsp;&nbsp;&nbsp;  <br>
data set SASUSER.TWO has 5 observations<br>
data set WORK.OTHER has 3 observations<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  B.<br>
data set SASUSER.ONE has 2 observations&nbsp;&nbsp;&nbsp;  <br>
data set SASUSER.TWO has 2 observations<br>
data set WORK.OTHER has 1 observations<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  C.<br>
data set SASUSER.ONE has 2 observations&nbsp;&nbsp;&nbsp;  <br>
data set SASUSER.TWO has 2 observations<br>
data set WORK.OTHER has 5 observations<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;  D. No data sets are output. The DATA step fails execution due to syntax errors.</font></p>
<p><font size="4">Answer: A</font></p>
<p><font size="4">本文属于博客:</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">这道题是一个非常有意思的题。<br>
其实考察的就是两个output语句对数据输出的影响。<br>
下面对数据的执行过程进行解析:<br>
程序编译之后,建立了PDV。<br>
当从数据集SASDATA.TWO中读入第一条数据,<br>
开始IF判断,判断为真就是OUTPUT到SASUSER.ONE数据集中。但是这里没有交代如果为假将会怎么样。我个人认为即使是假,也不会做</font></p>
<p><font size="4">任何处理。因为没有在假这个条件下的执行语句。<br>
继续判断,如果Y lt 5 then output SASUSER.TWO;<br>
记住一个点,也是PDV中,一条观测的在PDV中存在周期问题,如果OUTPUT出去了,是不是PDV中这一条数据就立即消失,全部为默认值</font></p>
<p><font size="4">了?这里就是关键所在,我个人觉得这个时候PDV没有中新的SET SASDATA.TWO或者INPUT时候,PDV应该是保留上次的值。那么到了<br>
OUTPUT语句时,其实默认输出到三个数据集中。<br>
所以导致5 2 这条观测以及5 6 这条被输出两次到SASUSER.ONE,加上3 1这一条是通过最后一条OUTPUT语句输出的,所以就是5条。<br>
同样SASUSER.TWO也是5条 OTHER是3条</font></p>
<p> </p> <a href="http://hi.baidu.com/crack%5Fman/blog/item/f125262ad525ca404ec22642.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/f125262ad525ca404ec22642.html#comment">查看评论</a>
作者: shiyiming    时间: 2010-11-12 12:26
标题: Re: 跟crakman做sas base认证试题(35)
只有一个PDV,请施主修改一下。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2