提取“A”中某些元素的简明方法;survfit“;对象转换为数据帧

提取“A”中某些元素的简明方法;survfit“;对象转换为数据帧,r,list,dataframe,R,List,Dataframe,我从survival库加载数据集,并生成survfit对象: library(survival) data(lung) lung$SurvObj <- with(lung, Surv(time, status == 2)) fit <- survfit(SurvObj ~ 1, data = lung, conf.type = "log-log") 现在,我指定了一些要转换为数据帧的成员(长度相同): members <- c("time", "n.risk", "n.eve

我从
survival
库加载数据集,并生成
survfit
对象:

library(survival)
data(lung)
lung$SurvObj <- with(lung, Surv(time, status == 2))
fit <- survfit(SurvObj ~ 1, data = lung, conf.type = "log-log")
现在,我指定了一些要转换为数据帧的成员(长度相同):

members <- c("time", "n.risk", "n.event") 

使用cbind绑定数据帧,然后使用名称更改列的名称

        time=as.data.frame(fit$time)
        n.risk=as.data.frame(fit$n.risk)
        n.event=as.data.frame(fit$n.event)
        members2=cbind(time,n.risk,n.event)
        names(members2)=c("time","n.risk","n.event")
     head(members2)
      time n.risk n.event
    1    5    228       1
    2   11    227       3
    3   12    224       1
    4   13    223       2
    5   15    221       1
    6   26    220       1
这没关系

data.frame(unclass(fit)[members])
另一种(更规范的)方法是

库(生存)
数据(肺)

lung$SurvObj该
broom
包包含整理回归模型结果并将其显示在类
data.frame
对象中的函数。对于那些不熟悉整洁哲学的人,请参见

库(扫帚)
#通过成员中保存的列创建整齐的数据框和子集

df预期的输出是什么样的?成员
        time=as.data.frame(fit$time)
        n.risk=as.data.frame(fit$n.risk)
        n.event=as.data.frame(fit$n.event)
        members2=cbind(time,n.risk,n.event)
        names(members2)=c("time","n.risk","n.event")
     head(members2)
      time n.risk n.event
    1    5    228       1
    2   11    227       3
    3   12    224       1
    4   13    223       2
    5   15    221       1
    6   26    220       1
data.frame(unclass(fit)[members])
with(fit, data.frame(time, n.risk, n.event))
library(survival)
data(lung)
lung$SurvObj <- with(lung, Surv(time, status == 2))
fit <- survfit(SurvObj ~ 1, data = lung, conf.type = "log-log")
str(fit)
members<-data.frame(time=fit$time,n.risk=fit$n.risk,n.event=fit$n.event)
members
library(broom)
#create tidy dataframe and subset by the columns saved in members
df <- tidy(fit)[,members]
head(df)
#  time n.risk n.event
#1    5    228       1
#2   11    227       3
#3   12    224       1
#4   13    223       2
#5   15    221       1
#6   26    220       1