-1

我希望这个例子能奏效。我想知道是否有办法提取每个点的坐标和生存曲线。我知道?plot.survfit 它会产生一个带有每个类结束坐标的值,但我想知道线条变化的所有点

library(survival)
status <- c(1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,0,0)
classification <- c(1,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8)
df <-data.frame( Sub = c(letters,LETTERS[1:24]), 
                         status= status, 
                         time= round(rnorm(50,300,100),0), 
                         class = classification )
fit <- survfit(Surv(time, status)~class, data= df)
plotFit <- plot(fit)

我知道我可以从中提取 surv 值 fit$surv,并且我可以将它们与fit$timeand结合起来,fit$n.event但是从这个矩阵中,我必须创建一个循环,以便在状态发生变化时在每 90 度转弯处创建一个点,所以如果有一个直接获得所有这些线转折点的值的更快方法。提前致谢

4

1 回答 1

0

我认为它的小写字母很好,我猜 data.frame 构造错误。像这样,代码运行。

library(survival)
status <- c(1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,1,0,0,1,1,0,0,0,0)
classification <- c(1,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8)


df <-data.frame( Sub = c(letters,LETTERS[1:24]),
                 status= status,
                 time= round(rnorm(50,300,100),0), 
                 class = classification )

fit <- survfit(Surv(time,status)~class, data= df)
plotFit <- plot(fit)

对于坐标,下面只是一个开始。我认为您必须在 n.events 处拆分线才能正确绘制它。

x <- c(1,fit$time)
y <- c(1,(fit$surv))
plot(x,y, type="S")

您还可以检查包survminer并检查功能ggsurvplot。绘图更好,绘图功能已导出。也许这会有所帮助?

library(survminer)
ggsurvplot(fit, data = df)
ggsurvplot
于 2018-05-31T17:10:45.457 回答