gtsummary|巧合-绘制多种数据汇总表“神器”

巧合?

今(昨)天上午时候交流群里一个小伙伴关于管道符疑问中出现了tbl_summary函数,下午另一个小伙伴有table1相关疑问。

晚上想起上午时候提示我没有tbl_summary函数,查到是gtsummary包的,习惯性看了下包的功能,这不是也可以绘制三线表?

惊了,于是有了这篇分享。

1
下载R包,数据

使用内置数据集演示

#install.packages("gtsummary")
library(gtsummary)
#查看内置数据集
head(trial)

2
绘制table1
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
模型结果数据
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

◆ ◆ ◆  ◆ 

R|tableone 快速绘制文章“表一”-基线特征三线表

精心整理(含图版)|R语言生信分析,可视化,你要的全拿走,建议收藏!

生物医学科研方法

如何评估随机森林模型以及重要预测变量的显著性

2021-1-17 20:14:33

生物医学科研方法

打开即查!广东卫生系列高级职称评审结果出炉

2021-1-18 0:05:10