我需要在写入数据步骤的sas宏中使用循环
我有一个应该工作的代码,但事实并非如此。我该如何解决?
%macro ci;数据%i = 1%到3; _z%sysfunc(putn(%eval(& i),z2。));%…
怎么样如果您使用更简单的方法而不是使用将数字转换为字符
data _06; num='01'; output; num='02'; output; num='03'; output; run; %macro ci; data %do i=1 %to 3; _z0&i %end; ; set _06; %do i=1 %to 3; if num="0&i" then output _z0&i; %end; run; %mend; %ci;
你很近。你只需要一个额外的 ; 在你的第一个循环中。
;
你需要改变:
data %do i=1 %to 3; _z%sysfunc(putn(%eval(&i),z2.)) ; %end; ;
至:
data %do i=1 %to 3; _z%sysfunc(putn(%eval(&i),z2.)) %end; ;
添加 option mprint; 代码的开头会显示从宏语句生成的代码,并帮助您调试它。
option mprint;