在导入时将variables设置为FileName

我正在使用下面的代码一次从文件夹中导入多个.XLSX文件。 它工作的很好,除非我不能区分每个文件一旦被导入和合并。 每个Excel文件都是特定年份的数据,我需要知道分析的年份。

有没有什么办法可以在每次导入时创build一个与文件名相同的variables,这样我就可以在合并后区分这些文件?

我已经完成了很长的一步,通过单独导入每个文件并在合并之前在每个数据集中创build一个variables,但是我正在寻找更快的方法来完成此操作。

filename indata pipe 'dir X:\"Projects"\"Source Data" /b '; /* put all the .xlsx file names in dataset file_list */ data file_list; length fname $200 in_name out_name $200; infile indata truncover; input fname $ 200.; in_name=translate(scan(fname,1,'.'),'_','-'); out_name=cats('_',in_name); run; data _null_; set file_list end=last; call symputx(cats('dsn',_n_),in_name); call symputx(cats('outdsn',_n_),out_name); if last then call symputx('n',_n_); run; %macro test; %do i=1 %to &n; PROC IMPORT OUT= work.&&outdsn&i. DATAFILE= "X:\Projects\Source Data\&&dsn&i...xlsx" DBMS=XLSX REPLACE; Range="FundingByYear$A3:J5249"; GETNAMES=YES; MIXED=NO; RUN; %end; %mend; %test data final; set _:; run; 

您可以使用SET语句中的INDSNAME选项来获取源DATASET的名称。

 data final; length dsname temp_dsname $41 ; set _: indsname=temp_dsname; dsname=temp_dsname; run; 

然后,您可以使用它来与您的FILE_LIST数据集合并,如果您想要的源文件的信息。