快速创建临床基线表

临床医学研究中,一个非常常见的需求就是,如何制作一个简答,明确,带有各种汇总信息的三线表,当然三线表是基础,向其中添加各种汇总信息,统计信息,注释信息能够让研究显得更加清晰明确,统计分析有据可依。

R中有很多工具可以制作三线表,也有很多工具可以做统计分析,但缺少一个统一起来且能顺畅输出的框架,这里可以使用gtsummary和flextable就能完成这一点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
library(gtsummary)
librarya(flextable)

#文件是一个常见的矩阵文件,其中有一个分数分组,其余都是一些临床特征数据,可以是连续变量,也可以是分类变量
#行为样本,列为特征

allrisks <- rbind(highrisk,lowrisk)
allrisks$Tumor_Sample_Barcode <- rownames(allrisks)
infclinical <- merge(infclinical,allrisks,by = "Tumor_Sample_Barcode")

infclinical <- infclinical[,-1]

infclinical <- as_tibble(infclinical,rownames = NULL)
infclinical

inf_name <- colnames(infclinical)
inf_name

library(gtsummary)

table2 <-
tbl_summary(
infclinical,
by = riskgroup, # 分组
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing = "no" #
) %>%
add_n() %>% # 添加非NA观测值个数
add_p() %>% # 添加P值
add_overall() %>%
modify_header(label = "**Variable**") %>% # 标签列header
bold_labels() #label 粗体
table2
library(tidyverse)
table2%>%
as_gt() %>%
gt::gtsave("./table2.rtf")

table2 %>%
as_flex_table() %>%
flextable::save_as_html()

注意,为了整洁起见,最好输出为html,效果非常好,输出为rtf也可以,但是输出为docx容易乱码,推测可能是编码的问题,但这东西不好折腾,最佳选择就是不要折腾,输出html大家都好。