Indexing 如何使用循环索引导出文件名

Indexing 如何使用循环索引导出文件名,indexing,sas,filenames,Indexing,Sas,Filenames,我试图导出许多文件,其中导出的文件名反映循环的迭代。使用以下代码I,导出的文件名为“history_u%I.dta”,而不是所需的“history_0.dta”、“history_1.dta”、“history_2.dta”等 %macro exporthistory; %do i = 0 %to 9; proc export data = a.history&i outfile = "LOCATION/history_%i.dta"; run; %e

我试图导出许多文件,其中导出的文件名反映循环的迭代。使用以下代码I,导出的文件名为“history_u%I.dta”,而不是所需的“history_0.dta”、“history_1.dta”、“history_2.dta”等

%macro exporthistory;
   %do i = 0 %to 9;
      proc export data = a.history&i outfile = "LOCATION/history_%i.dta";
      run;
   %end;
%mend exporthistory;

%exporthistory;

提前谢谢

history\u%i.dta
更改为'history\u&i..dta'

%macro exporthistory;
   %do i = 0 %to 9;
     proc export data = a.history&i outfile = "LOCATION/history_&i..dta";
     run;
   %end;
%mend exporthistory;

%exporthistory;

符号(&)是宏变量分隔符,正如前面正确使用的那样。另外,还需要第二个句点,因为
&i.
是宏变量,第二个句点是文件名的一部分。

这是导出到Stata的,对吗?可能值得强调的是,您已将“history\u%i.dta”更改为“history\u&i.dta”-我花了一段时间才发现“%”到“&”的更改。太棒了。非常感谢!我现在意识到这是一个多么初级的问题,但是…我是一个初级的,所以它是有意义的。