proc lifetest data=hodgkins outsurv=KM_data /*noprint*/;
time maltime*mcens(0);
strata age_gt30;
run;
proc sort data=KM_data;
by age_gt30;
run;
data KM_data;
set KM_data;
by age_gt30;
/* My question: Why age_gt30 are being sorted twice?*/
Failure = 1‐Survival;
output; run;
非常感谢,DomPazz和Peter Flom!我很惊讶创建新变量(名称Failure)需要“BY语句”来完成。 我会更好地理解,如果你说,不是1)和2)相同与否? /P.S。 age_gt30 = 0或1 /
1)proc lifetest data = hodgkins outsurv = KM_data; 时间错误* mcens(0); strata age_gt30;运行;
proc sort data = KM_data;按age_gt30;运行;
数据KM_data;设置KM_data;按age_gt30;失败= 1 - 生存;输出;运行;
2)proc lifetest data = hodgkins outsurv = KM_data; 时间错误* mcens(0); strata age_gt30;运行;
数据KM_data;设置KM_data;失败= 1 - 生存;输出;运行;
答案 0 :(得分:3)
数据集只被排序一次。
proc sort data=KM_data;
by age_gt30;
run;
最后的数据步骤是计算名为Failure
的变量。有一个BY
语句需要进行排序。我认为你的困惑是BY
陈述。它告诉数据步骤创建临时变量(不放到输出数据集),以帮助您找到具有相同BY
组值的所有值的开始和结束。
但是,在该数据步骤的代码中,不需要BY
语句。在小组内没有做任何事情。
这个简化的代码与数据步骤的功能相同。
data KM_data;
set KM_data;
Failure = 1‐Survival;
run;
答案 1 :(得分:1)
它没有被排序两次,它被排序一次(在PROC SORT上)但是SAS要求对数据进行排序以便运行BY语句。