我正在尝试遵循 R 中的教程(https://rviews.rstudio.com/2017/09/25/survival-analysis-with-r/ https://rviews.rstudio.com/2017/09/25/survival-analysis-with-r/)。我用于工作的计算机没有 USB 端口或互联网连接 - 它只安装了 R 并安装了一些库。我的工作计算机有“survival、ranger、ggplot2 和 dplyr”。然而,它没有“ggfortify”。我试图弄清楚如何在没有“ggfortify”的情况下绘制教程中的图表。这是我正在使用的代码:
#load libraries
library(survival)
library(ranger)
library(ggplot2)
library(dplyr)
#load data
data(veteran)
head(veteran)
#Part 1 : works
# Kaplan Meier Survival Curve
km <- with(veteran, Surv(time, status))
km_fit <- survfit(Surv(time, status) ~ 1, data=veteran)
#plot(km_fit, xlab="Days", main = 'Kaplan Meyer Plot') #base graphics is always ready
tibble(time = km_fit$time, surv = km_fit$surv,
min = km_fit$lower, max = km_fit$upper) %>%
ggplot(aes(x = time)) +
geom_line(aes(y = surv)) +
geom_ribbon(aes(ymin = min, ymax = max), alpha = 0.3)
但是,我无法让它工作:
#Part 2: does not work
km_trt_fit <- survfit(Surv(time, status) ~ trt, data=veteran)
tibble(time = km_trt_fit$time, surv = km_trt_fit$surv,
min = km_trt_fit$lower, max = km_trt_fit$upper) %>%
ggplot(aes(x = time, group = factor(veteran$trt), colour = factor(veteran$trt), fill = factor(veteran$trt))) +
geom_line(aes(y = surv)) +
geom_ribbon(aes(ymin = min, ymax = max), alpha = 0.3)
Error: Aesthetics must be either length 1 or the same as the data (114): group, colour and fill
或者这个工作:
#第 3 部分:不起作用
vet <- mutate(veteran, AG = ifelse((age < 60), "LT60", "OV60"),
AG = factor(AG),
trt = factor(trt,labels=c("standard","test")),
prior = factor(prior,labels=c("N0","Yes")))
aa_fit <-aareg(Surv(time, status) ~ trt + celltype +
karno + diagtime + age + prior ,
data = vet)
tibble(time = aa_fit$time, surv = aa_fit$surv,
min = aa_fit$lower, max = aa_fit$upper) %>%
ggplot(aes(x = time)) +
geom_line(aes(y = surv)) +
geom_ribbon(aes(ymin = min, ymax = max), alpha = 0.3)
Error: geom_line requires the following missing aesthetics: y
有人可以帮我纠正这些吗?
谢谢
(上一篇文章:R:绘制图表(ggplot 与 autoplot) https://stackoverflow.com/questions/65033260/r-plotting-graphs-ggplot-vs-autoplot/65034886#65034886)