SAS中文论坛

标题: 数据处理问题 [打印本页]

作者: shiyiming    时间: 2004-4-9 04:33
标题: 数据处理问题
data weekly;
infile 'D:\SAS code\weekly.txt';
input begweek: mmddyy8.
      endweek: mmddyy8.
      indbeg
      indend
;
format begweek mmddyy8. endweek mmddyy8.;
run;

数据文件如下:

10/20/03 10/27/03 1028.91 1050.71
10/13/03 10/20/03 1039.32 1028.91
10/06/03 10/13/03 1038.06 1039.32
09/29/03 10/06/03 1029.85 1038.06
09/22/03 09/29/03 996 1029.85
09/15/03 09/22/03 1036.3 996.85

我如果是直接在程序里引用
datalines;
10/20/03 10/27/03 1028.91 1050.71
10/13/03 10/20/03 1039.32 1028.91
10/06/03 10/13/03 1038.06 1039.32
09/29/03 10/06/03 1029.85 1038.06
09/22/03 09/29/03 996 1029.85
09/15/03 09/22/03 1036.3 996.85
;

一点问题没有

但是按照infile来读入文件

就出错
NOTE: Invalid data for indbeg in line 3 1-30.
NOTE: Invalid data for indend in line 4 1-30.
RULE:     
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---
-8----+

4   CHAR  12/29/03.01/05/04.1108.1121.86 30
    ZONE  332332330332332330333303333233
    NUMR  12F29F03901F05F049110891121E86
begweek=01/20/04 endweek=01/12/04 indbeg=. indend=. _ERROR_=1 _N_=1


请问这是为什么呢?

实际数据非常多, 希望能用infile直接调用文件

谢谢了

BTW,源文件是excel文件转存的txt文件
作者: shiyiming    时间: 2004-4-9 08:46
可能是infile statement 中选项的问题。

试一下:
infile 'D:\SAS code\weekly.txt' truncover;

下面这篇文章可能有用。
<!-- m --><a class="postlink" href="http://www2.sas.com/proceedings/sugi26/p009-26.pdf">http://www2.sas.com/proceedings/sugi26/p009-26.pdf</a><!-- m -->

有问题再联系。
作者: shiyiming    时间: 2004-4-9 09:04
我按你的方法运行没问题,是不是sas系统的问题哟!
作者: shiyiming    时间: 2004-4-9 09:26
[quote=&quot;gbt&quot;:f70b2]我按你的方法运行没问题,是不是sas系统的问题哟![/quote:f70b2]

和SAS无关,建议你仔细看一下上述链接的文章,这是我看到的深入讨论infile 语句选项最好的一篇paper。看了以后如果还没明白,请再联系。

简单的解释一下就是用infile读外部rawdata&lt;源数据&gt;与用datalines或cards读取数据的方法是有所不同的。

另外可参考 <!-- m --><a class="postlink" href="http://www.statstar.com/index.php?showtopic=660&amp;hl=infile">http://www.statstar.com/index.php?showt ... &amp;hl=infile</a><!-- m -->

耐心和新奇对学好SAS data step很重要。
作者: shiyiming    时间: 2004-4-9 22:55
One possibility is the delimiter used in Excel to save the data into text file.  I suggest you to use a text editor to browse the TXT file, and find out what kind of character is used between data.  By default, your program works only when it is a space.
作者: shiyiming    时间: 2004-4-9 23:34
多谢zibao和xic的指点
作者: shiyiming    时间: 2004-4-10 06:36
标题: 问题解决了
我想是excel转换成txt文件后出的问题

我用word看了一下另存好的txt文件

在notepad里最后两列数据连在一起, 中间没有任何分割

但是在notepad里是有空格的

可能这导致了读文件时候的出错

我然后用excel另存为csv文件,用逗号分割, 加了个DLM=','

一切运行无误了

谢谢各位大虾指点
作者: shiyiming    时间: 2004-4-10 11:06
对于anova的问题,我同意xic的分析,即excel文档转换为文本文件分隔符的问题,这并没有涉及到对short line的处理,不知zibao按自己的方法(infile '**' truncover )试过没有,我的结果表明不能解决anova的问题。我按照anova解决的思路将excel文档另存为‘带格式的文本文件’后缀名为prn,同样得到了预期的结果。




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