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;

上面的代码是将治疗组中的受试者数量分配给宏观变量,并使用它来计算上面代码所示的百分比。写入的宏块在数据步 TOTAL 中没有得到解决,也没有引发警告或错误。

4

1 回答 1

2

我认为您的最高级别问题是@DmitryShopin 在他的评论中提到的。但是,我的答案可能是阻止宏解析的原因。

%Total 宏中的 %If %Then 语句末尾需要另一个分号。一个分号用于变量赋值语句,一个分号用于 %If %Then 语句。如果要生成多个变量赋值语句,则每一个都需要一个分号结尾。

如果没有样本数据进行测试,不确定这是否是唯一的问题。

于 2013-12-14T18:15:28.263 回答