SAS中文论坛

标题: 问一个sas题目哈,请高人指点 [打印本页]

作者: shiyiming    时间: 2010-10-1 20:20
标题: 问一个sas题目哈,请高人指点
Given the contents of the raw data file TYPECOLOR.DAT:

  ----+----10---+----20---+----30
  daisyyellow

The following SAS program is submitted:

  data FLOWERS;
     infile 'TYPECOLOR.DAT' truncover;
     length
        Type $ 5
        Color $ 11;
     input
        Type $
        Color $;
  run;

What are the values of the variables Type and Color?

     A. Type=daisy, Color=yellow
     B. Type=daisy, Color=w
     C. Type=daisy, Color=daisyyellow
     D. Type=daisy, Color=

在sas上运行了,不知道为什么选D,也许本身对truncover不是很了解吧
作者: shiyiming    时间: 2010-10-1 22:11
标题: Re: 问一个sas题目哈,请高人指点
这是一个input外部文件的问题,包含4个知识点:
[quote:1mg94ca3]infile 'TYPECOLOR.DAT' truncover;[/quote:1mg94ca3]
1 infile语句没有使用dlm,dsd选项,这意味着如果后面的input语句使用list模式的话,将使用默认的分隔符-空格;
2 infile语句使用了truncover选项取代默认的flowover,避免遇到字段缺失时从下一行继续读取;
[quote:1mg94ca3]length Type $ 5 Color $ 11;[/quote:1mg94ca3]
3 length语句指定了type,color为character变量,一个变量的length为8,一个为11;
[quote:1mg94ca3]input Type $ Color $;[/quote:1mg94ca3]
4 input语句的写法表明使用的是分隔符固定的list模式,2个变量由分割符隔开,读入时的字符长度由分隔符决定,但能有效存储的字符长度由变量的length决定.

综合起来就是: 把外部数据集里的一行"daisyyellow",以空格为分隔符依次读入为2个变量,因为没空格,就把"daisyyellow"整个读入为变量type了,但type的length只有5,因此截断后,type的值只省下"daisy";而变量color没值可读,truncover又控制着不会到下一行继续读,也不会报错,因此color是的值就是missing的了
作者: shiyiming    时间: 2010-10-2 19:48
标题: Re: 问一个sas题目哈,请高人指点
嗯嗯,谢谢你哈,我懂了,谢谢你的讲解。由于是列表输入,因此需要空格或分隔符来表示不同的变量值,
由于没有空格或分隔符,因此第二个就不读取数据了,被赋值为缺失值,谢谢~!
作者: shiyiming    时间: 2012-7-11 15:16
标题: Re: 问一个sas题目哈,请高人指点
把外部数据集里的一行"daisyyellow",以空格为分隔符依次读入为2个变量,因为没空格,就把"daisyyellow"整个读入为变量type了,但type的length只有5,因此截断后,type的值只省下"daisy";而变量color没值可读,truncover又控制着不会到下一行继续读,也不会报错,因此color是的值就是missing的了
精辟!!!
作者: shiyiming    时间: 2012-9-2 19:11
标题: Re: 问一个sas题目哈,请高人指点
讲解的太好了。深入浅出,通俗易懂啊




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