我创建了这个模型:
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”),有人可以帮助我吗?
提前致谢
答案 0 :(得分:5)
你已经知道了。您看到打印到屏幕的所有内容都是长度为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"
答案 1 :(得分:4)
这也有效:
> 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