目录
一、gtsummary包介绍
二、提取log-rankp值
三、R语言自带函数练习
四、KM亚组分析 vs. 亚组分析森林图
gtsummary包介绍:提取万物
可以提取table 1人群基线表、Cox回归分析、KM曲线生存率等条件结果,自动成表。 学会该包将大幅度提高处理数据结果的效率。 该包的说明文件接近100页,这里只做简单介绍。 PDF见文末。
1、table 1绘制
install.packages("gtsummary")
library(gtsummary)
rm(list = ls())
#数据放入工作路径,加载
R14<- read.csv('R14.csv')
#查看结局:0为局部区域复发(55人)
R14$status<-factor(R14$status)
summary(R14$status)
#查看数据变量名字
names(R14)
#1.建立函数(挑几个变量进行统计)
table<-R14%>% select(Age,T.stage,LNM,ER,KI67)
#tbl_summary()函数直接出图
table1<-tbl_summary(table);table1
#出图-2,HER2分组、%>%看做添加的意思
table2<-tbl_summary(table,by =ER, # 分组
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing = "no" ) %>%
add_n() %>% # 变量数N
add_p() %>% # 添加P值
add_overall() %>% #添加全部人群列
modify_header(label ="**Variable**") %>% #标签列header
bold_labels();table2 #变量粗体
更多变换见说明文件
2、KM曲线生存率/p值提取成表
library(survival)
#install.packages("gtsummary")
library(gtsummary)
head(trial)
按时间提取例如1.2年发生率
fit1 <- survfit(Surv(ttdeath, death) ~ 1, trial)
fit2 <- survfit(Surv(ttdeath, death) ~ trt, trial)
# 按时间提取例如1.2年发生率
add_nevent.tbl_survfit_ex1 <-
list(fit1, fit2) %>%
tbl_survfit(times = c(12, 24)) %>%
add_n() %>%
add_nevent();add_nevent.tbl_survfit_ex1
汇报中位时间、p值等
library(survival)
# 汇报中位时间
fit1 <- survfit(Surv(ttdeath, death) ~ trt, trial)
fit2 <- survfit(Surv(ttdeath, death) ~ 1, trial)
# sumarize survfit objects
tbl1 <-tbl_survfit(fit1,times = c(12, 24),
label = "Treatment",label_header = "**{time} Month**")%>%
add_p();tbl1
tbl2 <-tbl_survfit(fit2,probs=0.5,
label_header = "**Median Survival**");tbl2
3、Cox回归表
#只需一行代码,做完表格
#library(survival)
t2 <-coxph(Surv(ttdeath, death) ~ trt + grade + age,
trial) %>%tbl_regression(exponentiate = TRUE);t2
提取log-rank p值(两种方法)
library(survival)
rm(list = ls())#清理
aa<- read.csv('R14.csv')
#查看数据前6行
head(aa)
#查看数据数据性质
str(aa)
log_rank<-survdiff(Surv(time, status==0)~ER,rho=0,data=aa)
1. 常规提取log-rank的办法(信息多)
log_rank
#结果
# survdiff(formula = Surv(time, status == 0) ~ ER, data = aa, rho = 0)
#
# N Observed Expected (O-E)^2/E (O-E)^2/V
# ER=Negative 67 21 9.76 12.93 15.8
# ER=Positive 283 34 45.24 2.79 15.8
#
# Chisq= 15.8 on 1 degrees of freedom, p= 7e-05 #结果
# survdiff(formula = Surv(time, status == 0) ~ ER, data = aa, rho = 0)
#
# N Observed Expected (O-E)^2/E (O-E)^2/V
# ER=Negative 67 21 9.76 12.93 15.8
# ER=Positive 283 34 45.24 2.79 15.8
#
# Chisq= 15.8 on 1 degrees of freedom, p= 7e-05
2. 直接提取法(简单)
p<- 1-pchisq(log_rank$chisq,length(log_rank$n)-1);p
[1] 7.1e-05
R语言自带函数练习
行列提取、删除、排序
rm(list = ls())
#数据放入工作路径,加载
R14<- read.csv('R14.csv')
#提取第一行入a表,看逗号与数字关系
a<-R14[1, ]
#提取第2.3列入c表
b<-R14[,c(2,3)]
#删除2.3列变为c表,删除2.3行放逗号前即可
c<-R14[,c(-2,-3)]
#把第1.2列status/time放最后
d<-R14[c(3:8,1,2)]
KM亚组分析 vs. 亚组分析森林图
在R语言|10. KM曲线代码进阶:各种亚组分析助你深入分析数据介绍了KM曲线的亚组分析。
但是遇到很多亚组时怎么办?想总结某个治疗方法在不同亚组的5年生存率有无差异怎么办?
或许基于生存率的亚组分析森林图也是一种不错的办法!
library(survival)
library(survminer)
#常见的KM曲线亚组分析
rm(list = ls())
#数据放入工作路径,加载
R15<- read.csv('R15.csv')
f <-survfit(Surv(time,status==0)~rt,data=R15)
#只需修改facet.by函数引号内的变量即可做出RT在不同变量的亚组分析
ggsurvplot_facet(f,R15,facet.by ="er",
palette="lancet",#颜色
pval=T)
上图,放疗与否在ER阳性或阴性组生存率差异的的KM曲线,曲线够直观,能显示总体走势,也汇报了p值。
但,若是想观察pr、her2、surg等7个变量的亚组的生存率、差异等,需要画7次这样的图,将占用大量文章篇幅,不够简洁。
此时,配合一张森林图可能有助于解决该问题!!!
下期看点:R语言|15. 森林图-4: 亚组分析森林图-2 (基于生存率)
点个关注不迷路
本公众号致力于打造一个实用的科研干货和临床学习资料分享平台,假如你有临床和科研上的问题或经验分享,请私信我。
感谢阅读,如有错误请指正!