SAS中文论坛

标题: 从外部文件读入数据问题 分隔符 [打印本页]

作者: shiyiming    时间: 2010-5-1 13:57
标题: 从外部文件读入数据问题 分隔符
现在外部文件是以 分隔符  “|@|”分割的
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下生成的文本文件。 请问这种情况应该怎么处理?谢谢!
作者: shiyiming    时间: 2010-5-1 15:15
标题: 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]
作者: shiyiming    时间: 2010-5-2 01:30
标题: Re: 从外部文件读入数据问题 分隔符
哪里有问题,哪里就能看到hopewell的身影,名副其实的中文论坛的侠客 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者: shiyiming    时间: 2010-5-2 22:57
标题: Re: 从外部文件读入数据问题 分隔符
太谢谢了! 问题基本解决了,我现在是以 '07'x 作为分隔符了,发现这个字符在数据文件里繁体中不会出现了,GBK的编码中没有 0*,1*,2*,3*(hex)开头的

另外还有个问题想再请教一下,数据文件中的某些数字列会有 ‘-nan’字样,也就是表示不是一个数字。输出时会报 NOTE: Invalid data for amnt in line 1942769 114-114.
想输出为null,不知道应该如何处理比较好些?对文件预先替换的话怕文件里本有有正常的‘-nan’字样。十分感谢!
作者: shiyiming    时间: 2010-5-3 08:11
标题: 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]
作者: shiyiming    时间: 2010-5-3 17:56
标题: Re: 从外部文件读入数据问题 分隔符
哈哈,好了,一切正常了,hopewell太牛了,非常感谢!




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