SAS:是否在输出中包含宏引用?

SAS:是否在输出中包含宏引用?,sas,sas-macro,Sas,Sas Macro,在SAS中,是否有方法在声明显式输出时引用宏?当我使用下面的代码时,它给了我一个错误,该代码试图使用宏“&fname”作为在数据步骤开始时声明的输出名称。(作为奖励,有没有办法将输出数据集的名称声明为某种循环,这样我就不必键入cd2002、cd2003等) 编写一个宏例程。这是让SAS为您“编写”代码的一种方法。有一个宏处理器,它展开代码,然后将其提交给主解释器 %macro split_cd(to,from); %local i; data %do i=&to %to &

在SAS中,是否有方法在声明显式输出时引用宏?当我使用下面的代码时,它给了我一个错误,该代码试图使用宏“&fname”作为在数据步骤开始时声明的输出名称。(作为奖励,有没有办法将输出数据集的名称声明为某种循环,这样我就不必键入cd2002、cd2003等)


编写一个宏例程。这是让SAS为您“编写”代码的一种方法。有一个宏处理器,它展开代码,然后将其提交给主解释器

%macro split_cd(to,from);
%local i;
data
   %do i=&to %to &from;
      cd&i
   %end;
;
set cd;
%do i=&to %to &from;
      if year=&i then output cd&i;
%end;
run;
%mend;
使用
mprint
选项查看生成和存储的代码:

options mprint;
%split_cd(2002,2005)

我很好奇为什么数据需要分开?其中可以选择特定年份或一系列年份,BY和CLASS语句可以将年份上的数据拆分为其他数据和过程步骤。我需要将数据加载到MATLAB中,而数据集太大,无法作为一个大步骤加载。一年一年地导出似乎更容易。MATLAB将加载SAS数据集吗?如果要生成CSV文件以加载到MATLAB中,则可以使用FILE语句中的FILEVAR=选项动态生成文件名。还有一个好选项:
options mprint;
%split_cd(2002,2005)