如何在sas中导入多个不同的分隔文件?

时间:2015-10-30 15:32:53

标签: file import sas

我有一个包含多个文件的文件夹。每个都在不同的类别中(比如说:5个文件是制表符分隔的,5个是csv文件,5个是管道分隔的,依此类推)。如何使用SAS导入它们? (我不想单独导入它们。)

1 个答案:

答案 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;