Sas 无法解析宏
上述代码用于将治疗组中的受试者数量分配给宏观变量,并使用该变量计算上述代码中所示的百分比。写入的宏块没有在datastep TOTAL中得到解决,也没有抛出警告或错误。我认为您的最高级别问题是@DmitryShopin在其评论中提到的。但是,我的答案可能是阻止宏解析的原因 %Total宏中的%If%Then语句需要在末尾再加一个分号。一个分号用于变量赋值语句,一个分号用于%If%Then语句。如果要生成多个变量赋值语句,则每个语句都需要一个结束分号Sas 无法解析宏,sas,sas-macro,proc-sql,Sas,Sas Macro,Proc Sql,上述代码用于将治疗组中的受试者数量分配给宏观变量,并使用该变量计算上述代码中所示的百分比。写入的宏块没有在datastep TOTAL中得到解决,也没有抛出警告或错误。我认为您的最高级别问题是@DmitryShopin在其评论中提到的。但是,我的答案可能是阻止宏解析的原因 %Total宏中的%If%Then语句需要在末尾再加一个分号。一个分号用于变量赋值语句,一个分号用于%If%Then语句。如果要生成多个变量赋值语句,则每个语句都需要一个结束分号 不确定这是否是唯一一个没有样本数据测试的问题。
不确定这是否是唯一一个没有样本数据测试的问题。看起来问题在于宏定义中的以下语句:%if ARMN=&i%,则。。。宏语句在打开代码之前编译,因此当%TOTAL编译时,它不知道数据步骤中将出现的变量ARMN。@DmitryShopin您应该将您的注释作为答案,我认为这是核心问题。它应该是数据步骤“if”,而不是宏%if<代码>如果ARMN=&i,则总数=
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;