我有一个包含多个文件的文件夹。每个都在不同的类别中(比如说:5个文件是制表符分隔的,5个是csv文件,5个是管道分隔的,依此类推)。如何使用SAS导入它们? (我不想单独导入它们。)
答案 0 :(得分:0)
有趣的问题。如果您可以通过查看该行来确定分隔符的逻辑,那么它应该很容易。让我们制作一些示例文件。
%let path=%sysfunc(pathname(work));
data _null_;
set sashelp.class ;
if _n_ < 7 then file "&path/1_csv.txt" dsd dlm=',';
else if _n_ < 13 then file "&path/2_tab.txt" dsd dlm='09'x;
else file "&path/3_pipe.txt" dsd dlm='|' ;
put (_all_) (+0);
run;
现在让我们尝试阅读它们。首先读取该行,然后根据您看到的内容设置DLM变量。然后阅读数据。
data want ;
if 0 then set sashelp.class ;
length dlm $1.;
infile "&path/*.txt" dsd dlm=dlm truncover;
input @;
if indexc(_infile_,'09'x) then dlm='09'x;
else if indexc(_infile_,'|') then dlm='|';
else if indexc(_infile_,',') then dlm=',';
input name -- weight;
run;
现在让我们将结果与原始数据进行比较。注意:根据您的操作系统,可能无法按照生成的顺序读取文件,因此您可能需要在尝试比较之前进行排序。
proc compare data=want compare=sashelp.class; run;