R语言中如何按年份提取数据并绘制对应生存曲线
R语言按年份提取数据绘制分组生存曲线实现方案
完全可以实现,基于单个表格文件按年份拆分绘制生存曲线的操作流程如下:
- 第一步:导入依赖包与表格数据
首先安装并加载生存分析、表格读取所需的工具包,读入本地电子表格数据,需确保你的数据表至少包含3类核心字段:年份标识列、生存时间列、结局事件列(1代表发生终点事件,0代表删失)# 首次使用请先安装包 # install.packages(c("survival", "survminer", "readxl")) library(survival) library(survminer) library(readxl) # 读入本地xlsx格式表格,替换为你自己的文件路径 raw_df <- read_excel("你的生存分析数据.xlsx") # 提前清理缺失值、生存时间为负的异常记录 clean_df <- na.omit(raw_df[raw_df$surv_time > 0, ]) # 将年份列转为因子型,避免被识别为连续变量 clean_df$year <- as.factor(clean_df$year) - 第二步:按需选择绘图模式
你可以选择把所有年份的生存曲线放在同一张图中对比,也可以为每个年份单独生成独立的生存曲线。- 同图展示多组年份生存曲线
直接以年份作为分组因子拟合生存模型,一次性输出带图例、组间差异检验结果的组合图:# 拟合分层生存对象 fit_combine <- survfit(Surv(surv_time, status) ~ year, data = clean_df) # 绘制组合曲线 ggsurvplot(fit_combine, data = clean_df, pval = TRUE, # 输出组间log-rank检验p值 conf.int = FALSE, # 不需要置信区间可改为FALSE legend.title = "观测年份", xlab = "随访时间", ylab = "累积生存概率", palette = "npg") - 分年份单独生成生存曲线
如果需要每个年份对应一张独立图,可先按年份拆分数据,循环拟合绘图并自动保存到本地:# 按年份拆分数据集 year_data_group <- split(clean_df, clean_df$year) # 循环遍历每个年份绘图、保存 for(target_year in names(year_data_group)){ temp_dat <- year_data_group[[target_year]] # 拟合单年生存模型,若单年内需分亚组对比,可把亚组变量放在~右侧 fit_single <- survfit(Surv(surv_time, status) ~ 1, data = temp_dat) # 生成单年生存曲线 single_plot <- ggsurvplot(fit_single, data = temp_dat, conf.int = TRUE, title = paste0(target_year, "年研究人群生存曲线"), xlab = "随访时间", ylab = "累积生存概率") # 保存图片到当前工作路径 ggsave(filename = paste0("生存曲线_", target_year, ".png"), plot = single_plot$plot, width = 6, height = 5, dpi = 300) }
- 同图展示多组年份生存曲线
注意:代码里的surv_time、status、year列名需要替换成你自己数据表里对应的实际列名,否则会运行报错。
内容的提问来源于stack exchange,提问作者LIU ZHICHENG
相关产品推荐
相关产品推荐

