我希望这个例子能够奏效。
我想知道是否有办法提取生存曲线的每个点的坐标。
我从?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)
我知道我可以从中提取幸存值
fit$surv
,我可以将它们与fit$time
和fit$n.event
结合使用,但是从这个矩阵开始,我必须创建一个循环,以便在状态发生变化时每转90度创建一个点,所以如果有更快的方法直接获得所有那些线转折点的值,那就是徘徊。
提前谢谢
答案 0 :(得分:0)
我认为它的小写版本的幸存者,我猜数据框架构造错误。像这样,代码运行。
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