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 =' –