r - 如何将survfit结果转换为相等的strata data.table?

标签 r data.table survival-analysis

我创建了这个生存模型(具有多条曲线)..

obj <- with(subscriptions, Surv(time=life_time, event=status, type="right"))
fit <- survfit(obj~sales_month, data=subscriptions)

..生成的 fit 对象将结果存储在 fit$surv 中。然而,就我而言,不同曲线/组的生存估计长度是不相等的。不同曲线的长度可以在 fit$strata 中找到。

数据基本上是这样的:

fit$surv <- 1:10
1  2  3  4  5  6  7  8  9 10

fit$strata <- c(5,3,2)
names(fit$strata) <- LETTERS[1:3]
A B C 
5 3 2

我需要将此数据提取到相等组长度的data.table,如下所示..

strata   surv
A        1
A        2
A        3
A        4
A        5
B        6
B        7
B        8
B        NA
B        NA
C        9
C        10
C        NA
C        NA
C        NA

有没有一种简单的方法可以做到这一点 - 或者我完全错过了一些明显的事情?

最佳答案

这是另一种不太优雅的方法:

n <- max(strata)
miss <- n-strata
newsurv <- c(surv, rep(NA,sum(miss)))
newnames <- c(rep(names(strata),strata), rep(names(strata), miss))
data.table(strata=newnames, surv=newsurv, key="strata")

这给出:

    strata surv
 1:      A    1
 2:      A    2
 3:      A    3
 4:      A    4
 5:      A    5
 6:      B    6
 7:      B    7
 8:      B    8
 9:      B   NA
10:      B   NA
11:      C    9
12:      C   10
13:      C   NA
14:      C   NA
15:      C   NA

关于r - 如何将survfit结果转换为相等的strata data.table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18977247/

相关文章:

r - 数据框列的平均值

r - 图的排列测试 - igraph

R data.table 在组内进行子集并将数据表拆分为两个

r - data.tables 的 Shiny react 失败

r - 错误变量的长度不同ggsurvplot_facet

r - 加速故障时间建模 : plotting survival probabilities with CI-s (example provided)

r - 使用 data.table 中的列名选择多个列范围

r - nls 奇异梯度矩阵 - 在积分上限中拟合参数

r - 使用 R expss 和 data.table 是否可以从 csv 文件加载 data.table 标签,而不是手动输入代码?

survival-analysis - 违反 PH 假设