如何在R中绘制含3个分组的Kaplan-Meier生存曲线?
基于双基因分组绘制Kaplan-Meier生存曲线(TCGA-LIHC队列)
步骤1:加载核心包
先确保安装并加载生存分析必备的两个包:
install.packages(c("survival", "survminer", "dplyr")) library(survival) library(survminer) library(dplyr)
步骤2:数据预处理与基因分组
假设你的合并数据集lihc_data包含以下字段:PTPRC(基因表达值)、FOXP3(基因表达值)、OS_time(生存时间)、OS_status(生存状态,1=死亡,0=存活)。
先按中位数给两个基因划分高低表达组:
# 计算基因表达中位数 ptprc_med <- median(lihc_data$PTPRC, na.rm = TRUE) foxp3_med <- median(lihc_data$FOXP3, na.rm = TRUE) # 生成高低分组变量 lihc_data <- lihc_data %>% mutate( PTPRC_group = ifelse(PTPRC > ptprc_med, "High", "Low"), FOXP3_group = ifelse(FOXP3 > foxp3_med, "High", "Low") )
接着按需求定义3个亚型:
lihc_data <- lihc_data %>% mutate( subtype = case_when( PTPRC_group == "High" & FOXP3_group == "Low" ~ "Subtype 1 (PTPRC_High/FOXP3_Low)", PTPRC_group == "High" & FOXP3_group == "High" ~ "Subtype 2 (PTPRC_High/FOXP3_High)", PTPRC_group == "Low" ~ "Subtype 3 (PTPRC_Low)", TRUE ~ NA_character_ ) ) %>% filter(!is.na(subtype)) # 剔除亚型分组缺失的样本
步骤3:拟合模型并绘制生存曲线
# 拟合Kaplan-Meier模型 km_fit <- survfit(Surv(OS_time, OS_status) ~ subtype, data = lihc_data) # 可视化曲线 ggsurvplot( km_fit, data = lihc_data, pval = TRUE, # 显示log-rank检验P值 conf.int = TRUE, # 显示置信区间 risk.table = TRUE, # 附加风险人数表 risk.table.col = "strata", # 风险表颜色与曲线匹配 linetype = "strata", # 不同亚型用不同线型区分 palette = c("#2E9FDF", "#E7B800", "#FC4E07"), # 自定义配色 legend.title = "Subtypes", xlab = "Time (Days)", ylab = "Overall Survival Probability" )
关键提示
- 确认生存状态编码:如果你的数据中
0=死亡,需要把模型里的OS_status改成1-OS_status。 - 亚型样本量检查:先跑
table(lihc_data$subtype)确认每个亚型的样本数,避免某亚型样本过少导致结果无意义。 - 临床数据整合:后续要加入临床协变量的话,可把模型改成
Surv(OS_time, OS_status) ~ subtype + age + tumor_stage,再用coxph()做多因素分析。
内容的提问来源于stack exchange,提问作者EK LEE
相关产品推荐
相关产品推荐

