我有一个装满csv文件的文件夹(文件夹路径Path
)。我有一个SAS数据集Name
,其中包含所选文件名列表。数据集Name
如下所示:
FileName
File1
File3
File8
File9
...
我想加载数据集name
(name1-name...
)上列出的每个文件,并使用相同的名称将其另存为sas数据集。
任何人都可以教我如何使用宏自动化这个过程。我无法弄清楚如何创建循环并逐个执行以下过程。非常感谢。
data Name1 ;
infile 'Path\Name1.csv' delimiter = ',' truncover DSD lrecl=32767 firstobs=2 ;
informat VAR1 $25. ;
informat VAR2 yymmdd10. ;
informat VAR3 best12. ;
format VAR1 $25. ;
format VAR2 yymmdd10. ;
format VAR3 best12. ;
input
VAR1 $
var2
var3
;
run;
答案 0 :(得分:1)
更改代码以获取宏变量而不是默认值。
%let name=name1;
data &name;
infile "Path\&name..csv" delimiter = ',' truncover DSD lrecl=32767 firstobs=2 ;
informat VAR1 $25. VAR2 yymmdd10. VAR3 best12. ;
format VAR1 $25. VAR2 yymmdd10. VAR3 best12. ;
input VAR1 $ var2 var3;
run;
创建一个带参数的宏
%macro import_file(name);
data &name;
infile "Path\&name..csv" delimiter = ',' truncover DSD lrecl=32767 firstobs=2 ;
informat VAR1 $25. VAR2 yymmdd10. VAR3 best12. ;
format VAR1 $25. VAR2 yymmdd10. VAR3 best12. ;
input VAR1 $ var2 var3;
run;
%mend;
在数据集中使用call execute来执行宏。
data _null_;
set files;
str=catt('%import_file(', file_name, ');');
call execute(str);
run;