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 и не выдает предупреждение или ошибку.Не удалось решить макрос
Похоже, проблема с этим утверждением в вашем макроопределения: %, если ARMN = & я%, то ... макрокоманды компилировать до открытого кода делает, поэтому, когда% ИТОГО компилирует это ничего не знает о вашей переменной ARMN, который будет выполняться на шаге данных. –
@DmitryShopin, вы должны ответить на свой вопрос, я думаю, что это основная проблема. –
Это должно быть datastep 'if', а не макрос% IF. 'если ARMN = & i, то TOTAL =' –