SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 959|回复: 7
打印 上一主题 下一主题

数据处理问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-4-9 04:33:11 | 只看该作者

数据处理问题

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文件
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-4-9 08:46:27 | 只看该作者
可能是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 -->

有问题再联系。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-4-9 09:04:16 | 只看该作者
我按你的方法运行没问题,是不是sas系统的问题哟!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-4-9 09:26:42 | 只看该作者
[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很重要。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-4-9 22:55:06 | 只看该作者
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.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-4-9 23:34:45 | 只看该作者
多谢zibao和xic的指点
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2004-4-10 06:36:49 | 只看该作者

问题解决了

我想是excel转换成txt文件后出的问题

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

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

但是在notepad里是有空格的

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

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

一切运行无误了

谢谢各位大虾指点
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2004-4-10 11:06:23 | 只看该作者
对于anova的问题,我同意xic的分析,即excel文档转换为文本文件分隔符的问题,这并没有涉及到对short line的处理,不知zibao按自己的方法(infile '**' truncover )试过没有,我的结果表明不能解决anova的问题。我按照anova解决的思路将excel文档另存为‘带格式的文本文件’后缀名为prn,同样得到了预期的结果。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-11 15:17 , Processed in 0.040998 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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