我正在尝试在SAS中开发一个do循环以创建多个生存图。 假设这是我的数据集:
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;
我打算使用do循环,而不是两次调用proc lifetest
。这就是我开发的。但它不起作用,我无法弄清楚问题出在哪里。
%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 :(得分: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)