资讯动态

gtsummary 快速上手指南:三分钟生成可直接投稿的专业统计表格

发布时间:2026/8/19 20:08:48 来源:尧图企业网站定制
gtsummary 快速上手指南三分钟生成可直接投稿的专业统计表格【免费下载链接】gtsummaryPresentation-Ready Data Summary and Analytic Result Tables项目地址: https://gitcode.com/gh_mirrors/gt/gtsummary如果你写过论文、做过研究报告一定经历过这样的崩溃时刻表格数据在 R 里算好了却要一行行复制到 Word 里手动排版对齐小数点、加 p 值星号、调整表头字体一弄就是一下午。gtsummary 就是为消灭这种痛苦而生的 R 包它能把数据摘要、回归模型结果一键变成格式规范、可直接发表的分析表格特别适合医学研究、临床试验报告、社科问卷分析以及任何需要把统计结果呈现给审稿人的场景。接下来我会用一个真实的临床试验数据集带你从零跑出第一张表再逐步升级到多模型对比和全文联动全程可复制可运行。你是不是也这样一整天耗在一张 Table 1 上先说说我在用 gtsummary 之前的工作流summary()看连续变量、table()数分类变量频数、t.test()算组间 p 值然后把结果一个个抄进 Excel 或 Word最后还要手动统一中位数四分位距这种写法。数据一变全部重来。gtsummary 的核心思路是把这整条流水线压缩成一条管道你只负责提供数据和分组方式它自动判断每个变量是连续型还是分类型自动挑选合适的统计量自动排好版式。它内置了trial这个 200 行、含 8 个变量的临床试验模拟数据治疗分组、年龄、肿瘤分期、生存时间等本文所有示例都可以直接跑通让你边看边复制几分钟就能上手。第一行代码tbl_summary() 三步快速上手安装和加载只需要两行。正式使用时我推荐直接安装 CRAN 版本install.packages(gtsummary) library(gtsummary)然后看看整个包的门面函数tbl_summary()。它做的是描述性统计也就是论文里最常见的 Table 1table1 - trial | tbl_summary(include c(age, grade, response))打印table1你得到的就是一张干净整洁的表连续变量age给出中位数四分位距分类变量grade和response给出频数百分比缺失值自动单独列一行所有表头都是可读的变量标签而不是age、grade这种原始列名。为什么能自动显示中文友好的标签因为trial里的变量带了label属性gtsummary 会自动读取它——这也是它在医学统计社区流行的原因之一默认输出就已经接近投稿格式。上面的截图是带分组和自定义表头的摘要表效果具体怎么加分组接着往下看。给表格加料分组、样本量、p 值一条管道搞定临床论文的 Table 1 几乎都要按治疗组对比并且要带组间差异的 p 值。在 gtsummary 里这只是一条管道的事table2 - trial | tbl_summary( include c(age, grade, response), by trt, # 按治疗分组 missing no # 不单独列出缺失值行 ) | add_n() | # 增加一列样本量 N add_overall() | # 增加一列总体统计 add_p() | # 自动计算组间 p 值 modify_header(label **变量**) | # 改表头 bold_labels() # 加粗变量标签拆开看每个环节by trt让表格按两治疗组并列展示add_n()增加每行的有效样本量列add_overall()在最前面加一列总计add_p()最关键——它根据变量类型自动选择检验方法连续变量用 Wilcoxon 秩和检验分类变量用卡方或 Fisher 精确检验并把 p 值放到最后一列。你完全不用手动指定检验但如果你想改用 t 检验也可以传add_p(test age ~ t.test)精细控制。到此一张标准的分组描述表就完成了。记住这个套路tbl_summary()负责统计add_*()系列负责增值这也是 gtsummary 整个包的设计哲学。回归结果一张表tbl_regression() 帮你省下半小时描述性统计之外论文里更常见的需求是展示回归模型结果。手写的话你需要tidy()提取系数、自己算置信区间、手动换算 OR/HR再粘贴进表格。gtsummary 的tbl_regression()把这些全部封装好了glm(response ~ age grade trt, data trial, family binomial) | tbl_regression(exponentiate TRUE) | # 输出 OR 而非系数 bold_p(t 0.05) # p0.05 加粗输出表包含变量、OR、95% 置信区间、p 值四列分类变量grade的每个亚组自动单独成行表格底部还会自动加脚注说明 OR 的含义。exponentiate TRUE是逻辑回归的标配它把 log 尺度系数换算成更易解释的优势比如果你的模型是线性回归去掉这个参数就能直接看到系数和标准误。tbl_regression()兼容性极广不只是glm()coxph()生存分析、lmer()混合效应模型、multinom()多项回归都在支持列表里。也就是说无论你的文章用什么模型输出格式都是统一的审稿人看表体验极佳。多模型并排对比tbl_merge() 让审稿人一眼看懂很多论文会有单变量分析 多变量分析两列或者同时报告肿瘤响应和生存时间两个结局。这时候tbl_merge()登场把多张表横向拼成一张t1 - glm(response ~ age grade trt, trial, family binomial) | tbl_regression(exponentiate TRUE) t2 - coxph(Surv(ttdeath, death) ~ age grade trt, trial) | tbl_regression(exponentiate TRUE) tbl_merge( tbls list(t1, t2), tab_spanner c(**肿瘤响应**, **生存时间**) )输出表格的列会变成两套并排的 OR/HR、置信区间和 p 值顶部用跨列表头标注肿瘤响应和生存时间两个板块同一变量比如 age在两张模型里的结果放在同一行对比起来一目了然。这也是我写论文时最爱用的功能把多结局、多模型的对比压缩成一张可读性极高的表。三个开关让全文档风格统一又漂亮当你有一堆表格要放进同篇文章时最怕的是每张表风格各异。gtsummary 的主题系统theme就是为这个场景设计的一行命令全局生效# 紧凑主题适合投稿版面 set_gtsummary_theme(theme_gtsummary_compact()) # 或按期刊风格排版 set_gtsummary_theme(theme_gtsummary_journal(journal jama)) # 甚至一键切换中文表头 set_gtsummary_theme(theme_gtsummary_language(zh-cn))注意两个细节第一set_gtsummary_theme()是全局设置一旦设定会影响之后创建的所有表格用reset_gtsummary_theme()可以清空第二如果只想微调某一处格式用modify_*()系列——modify_header()改表头、modify_footnote()改脚注、modify_fmt_fun()改数字格式比如 p 值保留三位小数、比率四舍五入到两位。想了解主题的全部可配置项可以翻源码 R/theme_gtsummary.R里面每个元素的命名和默认值都有注释。把数字塞进正文inline_text() 写论文的新姿势表格做好了正文里引用数字时你是不是还在手抄年龄中位数为 47 岁IQR 42-53——手抄不仅累还容易抄错。gtsummary 提供inline_text()让正文数字和表格始终联动tbl - trial | tbl_summary(include age) inline_text(tbl, variable age, column stat_0)在 R Markdown 或 Quarto 文档里把这一行放进反引号内联代码就能在正文里自动渲染出47 (42, 53)这样的字符串。数据集一更新正文数字自动跟着变彻底告别表格改了正文忘了改的尴尬。完整用法可以参考官方教程 vignettes/articles/inline_text.Rmdinline_text()也支持回归表可以直接引用某个变量的 OR 和置信区间。新手最容易踩的四个坑用了一段时间我把最常见的翻车现场总结成清单帮你直接绕开变量类型决定统计量。同一个变量存成数值型就出中位数四分位距存成因子就出频数百分比。数据导入后先用str()检查类型该factor()的记得转。逻辑回归忘了exponentiate TRUE。默认展示的是 log 尺度的系数审稿人看不懂你自己也容易误读。凡是二分类结局的glm()tbl_regression()一律加上这个参数。主题是全局污染。set_gtsummary_theme()设了紧凑主题之后所有表格都受影响。开会换电脑跑旧脚本先想一下是不是主题残留必要时用reset_gtsummary_theme()归零。缺失值默认全展示。tbl_summary()默认把缺失单独成行表格会显得冗长。数据缺失不多时加missing no更清爽缺失多时用missing ifany只显示有缺失的变量。写在最后先跑起来再谈完美回顾一下这次旅程我们用tbl_summary()五分钟生成了分组描述表用add_n()/add_p()/add_overall()补齐了论文 Table 1 的全部要素用tbl_regression()一张表展示回归结果用tbl_merge()把多模型并排对比再用主题和inline_text()让全文档风格统一、数字联动。这条工作流已经足够覆盖大多数论文和报告的核心表格需求。我的建议是现在就打开 R把上面第一段代码原样跑一遍看看 200 行数据变成一张规范表格有多快。跑通之后再把你自己真实的数据代入把变量名换成你的列名——gtsummary 会自动接管所有统计和排版细节。遇到高级需求时tbl_summary的源码在 R/tbl_summary.R完整教程在 vignettes/articles/tbl_summary.Rmd按需查阅即可。等你跑出第一张表就会明白为什么大家说用了 gtsummary就再也回不去手动排版的日子了。【免费下载链接】gtsummaryPresentation-Ready Data Summary and Analytic Result Tables项目地址: https://gitcode.com/gh_mirrors/gt/gtsummary创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价