我正在整理一个生存分析,该生存分析通过一个闪亮的应用程序运行,因此输出将经常更改。我有运行生存分析的代码,然后每26个月打印一次摘要(目前随机选择的数字),然后执行10次。
nil
摘要的输出大致如下所示:
km_fit <- survfit(Surv(Life_Time_Months, Is_Closed) ~ 1, data = My_Data)
summary(km_fit, times = c(25 * (1:10)))
我真的希望只有一个结果在生存百分比为0.5或尽可能接近的情况下才具有26的倍数。
我该怎么做?
答案 0 :(得分:2)
在拟合摘要中可以获得与存活百分比中位数相对应的时间。
例如,如果您使用数据集lung
:
library(survival)
library(survminer)
data("lung")
fit <- survfit(Surv(time, status) ~ sex, data = lung)
fit
的输出为:
> fit
Call: survfit(formula = Surv(time, status) ~ sex, data = lung)
n events median 0.95LCL 0.95UCL
sex=1 138 112 270 212 310
sex=2 90 53 426 348 550
如您所见,中位数是每种情况下生存百分比等于0.5的时间。 要提取此值,可以对摘要表进行排序:
> summary(fit)$table
records n.max n.start events *rmean *se(rmean) median 0.95LCL 0.95UCL
sex=1 138 138 138 112 325.0663 22.59845 270 212 310
sex=2 90 90 90 53 458.2757 33.78530 426 348 550
执行以下操作,仅提取median
:
> summary(fit)$table[,"median"]
sex=1 sex=2
270 426
适应您的代码,您应该尝试:
summary(km_fit)$table[,"median"]
它回答了您的问题吗?
如果没有,请考虑提供数据的可复制示例(How to make a great R reproducible example)