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中解析,并且没有发出警告或错误。
答案 0 :(得分:2)
我认为你最高级别的问题是@DmitryShopin在评论中提到的问题。但是,我的答案可能是阻止宏解决的问题。
你的%If%Total语句在%Total宏中需要另一个分号。变量赋值语句的一个分号和%If%Then语句的一个分号。如果要生成多个变量赋值语句,则每个变量赋值语句都需要一个结束的分号。
如果没有样本数据进行测试,不确定这是否是唯一的问题。