SAS - 如何在多个文件上运行阵列

时间:2017-12-04 17:10:06

标签: arrays macros sas

我有多个文件具有相同的命名约定和相同的数据格式:Dsn1到Dsn7。

目前我正在运行以下

data temp (drop=i); set Dsn1;
array S_(12) S_AUD--S_USD;
do i=1 to 12;
S_[i] = log(S_{i}); 
end;

我无法弄清楚如何为所有文件执行此操作?

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

这取决于。您可以创建一个宏并为每个文件运行它。或者您可以同时为所有文件运行它并创建一个“大”的文件。文件。

data temp (drop=i); 
     set Dsn1 - dsn7;
     array S_(12) S_AUD--S_USD;
     do i=1 to 12;
           S_[i] = log(S_{i}); 
     end;
run;

宏观方法:

%macro loop (num_datasets=);
  %do i=1 %to &num_datasets;

 data temp&i. (drop=i); 
 set Dsn&i;
 array S_(12) S_AUD--S_USD;
 do i=1 to 12;
       S_[i] = log(S_{i}); 
 end;
 run;

%end;

 %mend;

%loop(num_datasets=5);

文档中的宏附录有几个例子说明了它是如何工作的:

https://communities.sas.com/t5/SAS-Communities-Library/SAS-9-4-Macro-Language-Reference-Has-a-New-Appendix/ta-p/291716