SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 829|回复: 5
打印 上一主题 下一主题

从外部文件读入数据问题 分隔符

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-5-1 13:57:15 | 只看该作者

从外部文件读入数据问题 分隔符

现在外部文件是以 分隔符  “|@|”分割的
data mydata;
infile &filename  DELIMITER='|@|'  missover termstr=NL;
    input ...
     ;
run;

但是这种方式针对 两个连着的分隔符就会读错: |@||@|,不会将中间的空字段读出,加上dsd 也不行,因为DELIMITER='|@|' 不是将'|@|'视为一个整体,而是‘|’,'@'...都是分隔符,查了一下到9.2版本才能DLMSTR=‘’ 的方式来处理,但是现在是9.1版本。

最后的办法是将@也视为一个字段最后drop掉。不知道有谁知道这种情况有没有更好的处理办法。此问题1

问题2:
如果将‘|’做为分隔符,ascii:‘7C’,而文件中有少量的姓名会是繁体字结尾,比如 ‘韡’:ED 7C, sas就会认为此繁体字的7C是分隔符,造成错位。
设置 encoding='utf-8'  也不起作用。外部文件是 unix下生成的文本文件。 请问这种情况应该怎么处理?谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-5-1 15:15:07 | 只看该作者

Re: 从外部文件读入数据问题 分隔符

[code:3i37ysyj]data temp;
        infile datalines dsd;
        input @;
        _infile_=tranwrd(_infile_,'|@|',',');
        input x $ y $ m n;
datalines;
aaa|@|bbb|@||@|2
cc韡|@|dd|@|22|@|3
;[/code:3i37ysyj]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-5-2 01:30:10 | 只看该作者

Re: 从外部文件读入数据问题 分隔符

哪里有问题,哪里就能看到hopewell的身影,名副其实的中文论坛的侠客 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-5-2 22:57:28 | 只看该作者

Re: 从外部文件读入数据问题 分隔符

太谢谢了! 问题基本解决了,我现在是以 '07'x 作为分隔符了,发现这个字符在数据文件里繁体中不会出现了,GBK的编码中没有 0*,1*,2*,3*(hex)开头的

另外还有个问题想再请教一下,数据文件中的某些数字列会有 ‘-nan’字样,也就是表示不是一个数字。输出时会报 NOTE: Invalid data for amnt in line 1942769 114-114.
想输出为null,不知道应该如何处理比较好些?对文件预先替换的话怕文件里本有有正常的‘-nan’字样。十分感谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-5-3 08:11:28 | 只看该作者

Re: 从外部文件读入数据问题 分隔符

[code:3bzdr7z2]proc format;
        invalue num '-nan'=&#46;
                                other=_same_;
run;

data temp;
   infile datalines dsd;
   input @;
   _infile_=tranwrd(_infile_,'|@|',',');
   input x $ y $ m&#58;num&#46; n&#58;num&#46;;
datalines;
aaa|@|bbb|@|2|@|-nan
cc韡|@|dd|@|-nan|@|3
;[/code:3bzdr7z2]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-5-3 17:56:56 | 只看该作者

Re: 从外部文件读入数据问题 分隔符

哈哈,好了,一切正常了,hopewell太牛了,非常感谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 06:44 , Processed in 0.067205 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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