在 SAS 的 Do 循环宏中包含 Proc lifetest

Including Proc lifetest in Do loop macro in SAS

我正在尝试在 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)

您正在宏中访问变量,因此您需要在变量中添加一个前导符号。我也不确定 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)