SAS:在输出中包含宏引用?
SAS: including macro reference in output?
在 SAS 中,有没有办法在声明显式输出时引用宏?当我使用下面的代码时它给了我一个错误,它试图使用宏“&fname”作为在数据步骤开始时声明的输出名称。 (作为奖励,有没有办法将输出数据集的名称声明为某种循环,这样我就不必键入 cd2002、cd2003 等。)
data cd2002 cd2003 cd2004 cd2005;
set cd;
do i = 2002 to 2005;
%let fname=cats(cd,i);
if year=i then do; output &fname; end;
end
run;
写一个宏例程。这是为您提供 SAS "write" 代码的一种方式。有一个宏处理器扩展代码,然后将其提交给主解释器。
%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)
在 SAS 中,有没有办法在声明显式输出时引用宏?当我使用下面的代码时它给了我一个错误,它试图使用宏“&fname”作为在数据步骤开始时声明的输出名称。 (作为奖励,有没有办法将输出数据集的名称声明为某种循环,这样我就不必键入 cd2002、cd2003 等。)
data cd2002 cd2003 cd2004 cd2005;
set cd;
do i = 2002 to 2005;
%let fname=cats(cd,i);
if year=i then do; output &fname; end;
end
run;
写一个宏例程。这是为您提供 SAS "write" 代码的一种方式。有一个宏处理器扩展代码,然后将其提交给主解释器。
%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)