2015-10-14 295 views
1

我試圖在SAS中開發一個do循環以創建多個生存區塊。 認爲這是我的數據集:在SAS中包含Pro循環宏中的Proc lifetest

DATA Flr; 
    INPUT T F AGE; 
CARDS; 
31 0 52 
29 1 52 
13 1 22 
21 0 21 
19 0 21 
9 0 54 
9 1 17 

; 
RUN; 

我的預期輸出是執行下面這段代碼的結果:

proc lifetest data=Flr plots=survival(nocensor cb=hw cl atrisk=0 to 60 by 5); 
    strata age(40); 
    time T*F(0); 
run; 

proc lifetest data=Flr plots=survival(nocensor cb=hw cl atrisk=0 to 60 by 5); 
    strata age(20); 
    time T*F(0); 
run; 

而不是調用proc lifetest兩次的,我打算用do循環。這就是我所開發的。但它不起作用,我不知道問題出在哪裏。

%macro Create(a, b); 
    %Do i=a %to b %by 10; 
     proc lifetest data=data plots=survival(nocensor cb=hw cl atrisk=0 to 60 by 5); 
      strata age(i); 
      time T*F(0); 
     run; 
    %end; 
%mend Create; 

%Create(20, 40) 

回答

2

您正在訪問宏內部的變量,因此您需要向變量添加前導符號。另外我不確定hgage,這是一個錯字嗎?我改變它的年齡:

%macro Create(a, b); 
%Do i=&a %to &b %by 10; 
    proc lifetest data=data plots=survival(nocensor cb=hw cl atrisk=0 to 60 by 5); 
     strata age(&i); 
     time T*F(0); 
    run; 
%end; 
%mend Create; 

%Create(20, 40) 
+0

非常感謝,它現在的作品。抱歉,由於錯字。我修正了這一點。 – Milad