参考:
Survival Analysis Basics - Easy Guides - Wiki - STHDA
Facet Survival Curves into Multiple Panels — ggsurvplot_facet • survminer (datanovia.com)
获得数据 ——处理数据——出图
包:
代码语言:javascript复制library(survival)
library(survminer)
library(tidyverse)
必须要有的数据:
- status:病人状态,death 记为1,living 记为2,必须是 logical or numeric向量,不能是chr向量
- time:病人患病到现在的累积天数,如果死亡就累积到死亡那天的天数
以下数据根据实际情况准备
- Type:癌症分型,必须是factor
- Gene:gene表达量,我用的是转录组数据,log(tpm 1)
- Group : 自定义阈值判断表达量的高低,必须是factor
选择你感兴趣的事件,比如A基因表达量高低,Dex的给药浓度,化疗时间长短
这里准备数据的目的:看A基因表达高低对病人生存情况的影响,以及在乳腺癌不同亚型的生存情况
数据类型
代码语言:javascript复制str(sur_em2)
'data.frame': 489 obs. of 6 variables:
$ Patient_ID: chr "TCGA-EW-A1P7" "TCGA-A2-A3XT" "TCGA-A7-A26I" "TCGA-AN-A0FX" ...
$ status : num 2 2 2 2 2 2 2 2 2 2 ...
$ time : int 915 2770 661 10 608 2048 488 224 760 21 ...
$ Type : Factor w/ 4 levels "LumA","LumB",..: 4 4 4 4 4 4 4 4 4 4 ...
$ Gene : num 4.7 4.19 3.59 4.24 4 ...
$ Group : Factor w/ 2 levels "High","Low": 1 NA NA NA NA 1 1 2 2 1 ...
代码语言:javascript复制attach(sur_em2)#绑定数据集
fit <- survfit(Surv(time,status) ~ Group, # 创建生存对象
data = sur_em2) # 数据集来源
ggsurvplot(fit, data = sur_em2)#画图
考虑多个因素
代码语言:javascript复制fit2 <- survfit(Surv(time, status) ~ Group Type,
data = sur_em2 )
ggsurvplot_facet(fit2, sur_em2, facet.by = "Group",
palette = "jco", pval = TRUE)