【发布时间】:2017-12-04 17:10:06
【问题描述】:
我有多个具有相同命名约定和相同数据格式的文件: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;
我无法弄清楚如何对所有文件执行此操作?
任何帮助表示赞赏
【问题讨论】:
我有多个具有相同命名约定和相同数据格式的文件: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;
我无法弄清楚如何对所有文件执行此操作?
任何帮助表示赞赏
【问题讨论】:
这取决于。您可以创建一个宏并为每个文件运行它。或者您可以一次为所有文件运行它并创建一个“大”文件。
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);
文档中的宏附录有几个如何工作的示例:
【讨论】: