如果正确理解了你的问题,批量导入可以用pipe把所有文件名存成一个SAS dataset,然后在data step里先读入这个dataset,再在infile statement用filevar来打开需要读取的文件,这样每一个loop都会读取相应的文件,同时可以自定每个变量的格式。
以下来自
Introduction to SAS. UCLA: Statistical Consulting Group.
from http://www.ats.ucla.edu/stat/sas/faq/multi_file_read.htm (accessed December 5, 2015).
%let dirname = c:\work\raw_data_files;
filename DIRLIST pipe "dir /B &dirname\*.txt";
data dirlist ;
length fname $256;
infile dirlist length=reclen ;
input fname $varying256. reclen ;
run;
proc print data = dirlist;
run;
***
Obs fname
1 file01.txt
2 file3.txt
3 file7.txt
***
data all_text (drop=fname);
length myfilename $100;
length name $25;
set dirlist;
filepath = "&dirname\"||fname;
infile dummy filevar = filepath length=reclen end=done missover;
do while(not done);
myfilename = filepath;
input name $ x1 x2 x3;
output;
end;
run;
proc print data=all_text;
run;
***
Obs myfilename name x1 x2 x3
1 C:\work\raw_data_files\file01.txt John 12 354 7
2 C:\work\raw_data_files\file01.txt Carl 43 657 9
3 C:\work\raw_data_files\file01.txt Mary 343 7 9
4 C:\work\raw_data_files\file3.txt adam 12 354 7
5 C:\work\raw_data_files\file3.txt brad 43 657 9
6 C:\work\raw_data_files\file3.txt tyler 343 7 9
7 C:\work\raw_data_files\file7.txt mary 343 56 2
8 C:\work\raw_data_files\file7.txt robert 243 67 8
9 C:\work\raw_data_files\file7.txt brad 43 657 9
10 C:\work\raw_data_files\file7.txt tyler 343 7 9
***