如何从survfit对象中提取值

问题描述 投票:0回答:2

我创建了这个模型:

model <- survfit(Surv(time,status)~c$sex)
model

输出为:

Call: survfit(formula = Surv(time, status) ~ c$sex)

             records n.max n.start events median 0.95LCL 0.95UCL
c$sex=female      15    15      15      8    720     517      NA
c$sex=male        28    28      28     23    234     145     712    

所以,我想提取男性的中位数和女性的中位数,但不知道该怎么做。 这是我的尝试:

>model$median
NULL

>summary(model)$table[, "median"]
c$sex=female c$sex=male 
       720.0            234.5 

我想要单独的每一个值(“720”和“234.5”),有人可以帮助我吗?

提前致谢

r extract survival-analysis
2个回答
15
投票

你已经明白了。您在屏幕上看到的只是长度为 2 的向量的

names
属性。

fit <- survfit(Surv(time, status) ~ x, data = aml)
summary(fit)$table
#                records n.max n.start events median 0.95LCL 0.95UCL
#x=Maintained         11    11      11      7     31      18      NA
#x=Nonmaintained      12    12      12     11     23       8      NA

#  Access first value like any other vector
summary(fit)$table[,'median'][1]
#x=Maintained 
#          31

要打印不带姓名的内容,请使用

unname()
...

unname(summary(fit)$table[,'median'])
# [1] 31 23

但是你不需要

unname()
将它们用作数值,那只是一种审美愿望......

sum( summary(fit)$table[,'median'] )
[1] 54

为了进一步证明(!)它是一个向量,请使用

str()
...

str(summary(fit)$table[,'median'])
# Named num [1:2] 31 23
# - attr(*, "names")= chr [1:2] "x=Maintained" "x=Nonmaintained"

5
投票

这也有效:

> library(survMisc)
> fit <- survfit(Surv(time, status) ~ x, data = aml)
> median(fit)
                median
x=Maintained        31
x=Nonmaintained     23

并且没有名称(即删除

data.frame
的结构):

> unname(unlist(median(fit)))
[1] 31 23

如果您还想要置信区间(默认为“log”),那就太好了:

> median(fit, CI=TRUE)
                median lower upper
x=Maintained        31    13    NA
x=Nonmaintained     23     5    43
© www.soinside.com 2019 - 2024. All rights reserved.