panglr 问题是这样的:有三十多个字段的数据存放在一个文件夹中,每个字段一个数据文件,以TXT格式保存;现在需要将这些字段整合到一起做成一个二维的表格。用的程序如下: data _null_; set file_list; /*数据集文件名称组成的数据集*/ by prefixname; if first.prefixname then call execute('data unite; set unite; infile "文件路径\'||fname|| '";input '|| prefixname || ' ; run;'); run; 导入数据集少的时候没有问题,两个,三个都可以。但是有38个字段导入时,看日志到第二个文件就发现导入的数据减少了。 不知道是什么问题,请各位高手不吝赐教!谢谢! 或者能够给出更好的方案,能将这些文本形式存放的数据文件整合成一个二维的数据表格。
wanghao88 猜测一下原因吧 (1)你这个数据集很大,SAS对数据集大小是不是有限制? (2)即便SAS没限制,你的硬盘分区格式是不是对文件大小有限制,譬如fat32单个文件最大只有2G。 这种任务,用linux系统是很容易解决的 paste file01 file02 .... file38 > finalfile 就可以了,生成的文件还是文本文件。 另外,注意win系统和linux文件的换行符是不一样的,别忘了转换一下,以免出错。
panglr 谢谢回复。我对linux系统不熟悉。 但是问题已经解决。是这样的:用proc import 导入合并时没有问题,用infile命令导入数据就会有几个字段的数据丢失。我用import导入后就没有问题了。但是不知道infile导入为什么会丢失,还有这些数据字段用空行表示缺失值的。
autoban 回复 第5楼 的 panglr:Did you try the LRECL option to the INFILE statement? PROC IMPORT is just a wrapper to INFILE. You can compare the PROC IMPORT log file with your code to see what caused the difference.
panglr 回复 第6楼 的 remember, discover, invent:谢谢!确实像你指出的,根据proc import日志运行文件,在infile的option中加选项 delimiter='09'x MISSOVER DSD lrecl=32767 lrecl=32767 后导入的数据就是完整的。不过,查了一下对这些选项的说明还是有点云里雾里。但是知道proc import和infile 语句之间的关系了。非常感谢!