0
proc sql noprint;
select count(distinct USUBJID) into : N1 - : N4 from DM where upcase(ARM) ^= "SCREEN FAILURE"`
group by ARMN;
quit;
%macro TOTAL(name=,num=);
%do i=1 %to #`
%if ARMN=&i %then TOTAL= put(COUNT,3.)||" (" ||right(put(COUNT*100/&&name&num,5.1))||"%) ";
%end;
%mend TOTAL;
data TOTAL;
set DS;
%TOTAL(name=T,num=4);
/*if ARMN=1 then TOTAL= put(COUNT,3.)||" (" ||right(put(COUNT*100/&N1,5.1))||"%) ";*/
run;
上述代码是将治疗组中的受试者数量分配给宏变量,并使用相同的代码计算上述代码中显示的百分比。写入的宏块在datastep TOTAL中没有得到解决,也没有发出警告或错误。无法解析宏
貌似问题是这种说法在你的宏定义: %,如果ARMN =&I%,那么... 宏语句编译开放代码做之前,所以当%总量编译因此它不知道你的变量将在数据步骤中发生的ARMN。 –
@DmitryShopin你应该让你的评论成为答案,我认为这是核心问题。 –
它应该是一个datasp'if',而不是一个宏%IF。 '如果ARMN =&我然后TOTAL =' –