我创建了这个生存模型(具有多条曲线)..
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/