需要解决的问题:
通过宏建一系列的表divorce_flag_1,divorce_flag_2,divorce_flag_3,divorce_flag_4。保证每个表中都有id,p1,p2,p3,p4五个变量。
生成不包含p&n的p1~p4变量集该怎么写do循环代码呢?
【举个例子】要生成divorce_flag_2,我现在已有的表a.divorce_flag中已有id和a2(改名后为p2)两个变量,需要通过宏生成的新表需要有变量id,p2,以及其他三个变量p1,p3,p4,且p1=0,p3=0,p4=0。
生成不包含p2的p1~p4变量集该怎么写do循环代码呢?
【代码如下】
%macro divorce_flag(n);
data a.divorce_flag_&n;
set a.divorce_flag(keep=id a&n rename=(a&n=p&n));
where p&n=1;
%do m=1 %to 4;
%if m=&n %then %do;
%goto endmacro; /*m=n的时候就不生成p&m变量*/
%end;
%else %do;
p&m=0; /*m!=n的时候才生成p&m变量*/
%end;
%end;
run;
%mend;
【结果显示】
ERROR: 宏 DIVORCE_FLAG 至少包含一个 %GOTO 语句,但没有定义有效的标签。将不编译该宏。
ERROR: 将编译哑宏。
%divorce_flag(n); 结果中并不显示新生成的p变量