我希望这个例子能奏效。 我想知道是否有办法提取生存曲线上每个点的坐标。 我从?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$time
和fit$n.event
结合起来,但是从这个矩阵中,我必须创建一个循环,以便在状态更改时每 90 度转弯创建一个点,如果有更快的方法直接获得所有这些线转折点的值,那么徘徊也是如此。 提前致谢
我认为它与小写字母相适应,我想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