简介:gtsummary包可实现快速常用论文表
详细参数设置参考官方网址
基线表
1.t检验
# 补充正态性检验
mytest1 <- function(data, variable, ...) {
shapiro.test(data[[variable]])$p.value
}
mytest2 <- function(data, variable, ...) {
ks.test(data[[variable]], "pnorm", mean=mean(data[[variable]],na.rm=T), sd=sd(data[[variable]],na.rm=T))$p.value
}
#perform kolmogorov-smirnov test
t1 <- adam %>% select(a1,a3,a4) %>% #选择需要分析的变量
tbl_summary(by = a1, #指定分组变量
missing="ifany", #指定是否显示变量的缺失值个数
statistic = list(all_continuous() ~ "{mean}({sd})", #连续性变量的统计量设定
all_categorical() ~ "{n} ({p}%)"),#分类变量的统计量设定
digits = list(all_continuous() ~ 2,
all_categorical()~c(0,2))) %>% #设定分类统计量的小数位数
add_overall() %>%
add_difference(test=all_continuous() ~"t.test",estimate=all_continuous()~ label_style_sigfig(digits = 4),pvalue_fun = ~ style_pvalue(.x, digits = 3)) %>%
modify_header(statistic ~ "**T Statistic**") %>% #添加检验统计量
add_stat(fns=all_continuous()~mytest1) %>%
modify_header(add_stat_1 = "**shapiro test**") %>%
add_stat(fns=all_continuous()~mytest2) %>%
modify_header(add_stat_2 = "**ks test**") %>%
modify_fmt_fun(statistic ~ label_style_sigfig(digits = 4),add_stat_1 ~label_style_pvalue(digits = 2),add_stat_2 ~label_style_pvalue(digits = 2)) #检验统计量的小数位数
t1
2.wilcoxon检验
#添加另一种输出z值的wilcoxon结果
mytest3 <- function(data, variable,by, ...) {
wilcox_test(data[[variable]] ~ data[[by]])@statistic@teststatistic
}
mytest4 <- function(data, variable,by, ...) {
pvalue(wilcox_test(data[[variable]] ~ data[[by]]))
}
t2 <- adam %>% select(a1,a3,a4) %>% #选择需要分析的变量
tbl_summary(by = a1, #指定分组变量
missing="always", #指定是否显示变量的缺失值个数
statistic = list(all_continuous() ~ "{median}({p25},{p75})", #连续性变量的统计量设定
all_categorical() ~ "{n} ({p}%)"),#分类变量的统计量设定
digits = list(all_continuous() ~ 2,
all_categorical()~c(0,2))) %>% #设定分类统计量的小数位数
add_overall() %>%
add_difference(test=all_continuous() ~"wilcox.test",estimate=all_continuous()~ label_style_sigfig(digits = 4),pvalue_fun = ~ style_pvalue(.x, digits = 3)) %>%
modify_header(statistic ~ "**Test Statistic**") %>% #添加检验统计量
add_stat(fns=all_continuous()~mytest3) %>%
modify_header(add_stat_1 = "**statistic Z**") %>%
add_stat(fns=all_continuous()~mytest4) %>%
modify_header(add_stat_2 = "**wilcox2 p**") %>%
modify_fmt_fun(statistic ~ label_style_sigfig(digits = 4),add_stat_1 ~ label_style_sigfig(digits = 4),add_stat_2 ~ label_style_pvalue(digits = 2))
t2
#结果导出
t1 %>% as_hux_xlsx(file = 'table1.xlsx') #结果输出为excel表
#将结果转为word表
library(officer)
library(flextable)
table <- as_hux_table(t1) #将t1转为huxtable表
ft <- flextable(table) #继续转换为可用格式
doc <- read_docx()
doc <- doc %>%
body_add_par("标题", style = "Normal") %>% #添加标题和格式
body_add_flextable(ft) %>% #添加表格
body_add_par("注:与常规组治疗后比较,“P<0.05;与tDCS组治疗后比较,P<0.05。", style = "Normal") %>% #添加脚注
body_add_par("", style = "Normal") # Blank line between tables
print(doc, target = "output_tables.docx") #输出word
table1_1 <- t1 %>% as_tibble() #也可转成tibble格式进一步调整
语法简介:
“select”选择需要被分析的变量(包括分组变量)
tbl_summary函数语法
“by=”指定分组变量
“statistic=”指定变量的统计值,“all_continuous() ~”指定连续性变量,“all_categorical()”指定分类变量
“digits =”指定显示的统计量的小数位数,如要分别指定可以用向量的形式
“add_p(test=all_continuous()~”t.test”,pvalue_fun = ~ style_pvalue(.x, digits = 3))”添加p值,指定检验方法和p值的小数位数
add_difference(test=all_continuous() ~”t.test”,estimate=all_continuous()~ label_style_sigfig(digits = 4),pvalue_fun = ~ style_pvalue(.x, digits = 3)) #add_p的上位替换,多增加了差值的置信区间
“add_overall()”指定添加汇总列
“add_stat_label”添加统计量显示标签
“modify_header(statistic ~ “Test Statistic“)”添加检验统计量
add_stat(fns=all_continuous()~mytest1) 增加自定义统计量列
modify_header(add_stat_1 = “**statistic Z**”) 定义add_stat增加列的列名
#定义检验统计量和自定义统计量的小数位数(label_style_pvalue表示p值风格小数)
modify_fmt_fun(statistic ~ label_style_sigfig(digits = 4),add_stat_1 ~ label_style_sigfig(digits = 4),add_stat_2 ~ label_style_pvalue(digits = 2))
“as_hux_xlsx(file = ‘table1.xlsx’)” 结果输出为excel表
注意事项:
add_p函数默认添加的检验方法是非参数检验,如需要t检验p值需要使用“test=all_continuous()~”t.test””
有一些离散型变量如年龄或者分类数较多的变量,默认会识别为分类变量,可以用“type=”来指定其为连续性变量(eg:type=list(a3~”continuous”) )
默认会将二分类变量单行显示(可用value参数指定要显示的分类),如需修改为两行显示需指定type = list(all_dichotomous() ~ “categorical”)
有时可能出现添加add_overall() 时汇总列出现在两组中间的情况,这时需设定分组变量为factor格式
数据结果展示:
欢迎留言探讨