gtsummary|巧合-绘制多种数据汇总表“神器”
巧合?
今(昨)天上午时候交流群里一个小伙伴关于管道符疑问中出现了tbl_summary
函数,下午另一个小伙伴有table1
相关疑问。
晚上想起上午时候提示我没有tbl_summary
函数,查到是gtsummary包的,习惯性看了下包的功能,这不是也可以绘制三线表?
惊了,于是有了这篇分享。
使用内置数据集演示
#install.packages("gtsummary")
library(gtsummary)
#查看内置数据集
head(trial)
2.1 简单表格
#先选择部分变量进行展示
trial2 <- trial %>% select(age, grade, death, trt)
# 绘制
table1 <- tbl_summary(trial2)
table1
可以看到连续型变量使用的是中位数(四分位数),分类变量使用的 个数(比例)。
但是不是缺点什么?
文献中的表1,是不是会有分组?是不是会有总体描述?是不是会有P值?是不是会有mean(sd) ?那就加!
2.2 小修小改
1)添加一下参数,完成上述需求
table2 <-
tbl_summary(
trial2,
by = trt, # 分组
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing = "no" #
) %>%
add_n() %>% # 添加非NA观测值个数
add_p() %>% # 添加P值
add_overall() %>%
modify_header(label = "**Variable**") %>% # 标签列header
bold_labels() #label 粗体
呐,都有了
。。。
2)又发现连续型数据的检验方式可不可以用t检验?必须可以!
table3 <-
tbl_summary(
trial2,
by = trt, # 分组
statistic = list(all_continuous() ~ "{mean} ({sd})")
) %>%
add_p(test = list(all_continuous() ~ "t.test")) # 添加P值
就可以根据需求,结合着使用就可以绘制文献中的 “Table1”了 !
那为什么题目不叫绘制表一,因为表2 ,表3也能绘制啊!
3.1 逻辑回归模型
#构建逻辑回归
mod1 <- glm(response ~ trt + age + grade, trial, family = binomial)
t1 <- tbl_regression(mod1, exponentiate = TRUE)
t1
直接把结果提取出来了 且 绘制成了表格,不香吗?
3.2 COX生存分析
生信中出镜率极高的COX生存模型呢,结果可以直接用吗?
自信点,去掉吗
library(survival)
t2 <-
coxph(Surv(ttdeath, death) ~ trt + grade + age, trial) %>%
tbl_regression(exponentiate = TRUE)
t2
HR , 95%CI ,P value 都有了,,,
3.3 结果合并
甚至你还可以用tbl_merge函数将多个结果合并在一起,,这有点6了啊
# merge tables
tbl_merge_ex1 <-
tbl_merge(
tbls = list(t1, t2),
tab_spanner = c("**Tumor Response**", "**Time to Death**") #防止混淆,定义名字
)
好了,多谢“巧合”,发现了一个简单实用的绘制多种统计表的方式。
四 参考资料:
http://www.danieldsjoberg.com/gtsummary/
http://www.danieldsjoberg.com/gtsummary/articles/gallery.html
◆ ◆ ◆ ◆ ◆