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'=.
other=_same_;
run;
data temp;
infile datalines dsd;
input @;
_infile_=tranwrd(_infile_,'|@|',',');
input x $ y $ m:num. n:num.;
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