You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)
    
  • 第二步:按需选择绘图模式
    你可以选择把所有年份的生存曲线放在同一张图中对比,也可以为每个年份单独生成独立的生存曲线。
    1. 同图展示多组年份生存曲线
      直接以年份作为分组因子拟合生存模型,一次性输出带图例、组间差异检验结果的组合图:
      # 拟合分层生存对象
      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")
      
    2. 分年份单独生成生存曲线
      如果需要每个年份对应一张独立图,可先按年份拆分数据,循环拟合绘图并自动保存到本地:
      # 按年份拆分数据集
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:45:41