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

时间:2015-10-14 07:30:38

标签: sas sas-macro

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

1 个答案:

答案 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)