gtsummary 从入门到实战:几行 R 代码产出论文级统计表格与回归结果展示

📅 发布时间:2026/8/19 19:09:53
gtsummary 从入门到实战:几行 R 代码产出论文级统计表格与回归结果展示 gtsummary 从入门到实战几行 R 代码产出论文级统计表格与回归结果展示【免费下载链接】gtsummaryPresentation-Ready Data Summary and Analytic Result Tables项目地址: https://gitcode.com/gh_mirrors/gt/gtsummarygtsummary 是 R 生态里主打开箱即用的统计表格工具包能基于数据框与回归模型在几行代码内生成可直接投稿的数据摘要表格与回归结果展示并覆盖样式定制、内联引用与多格式导出。本文用一个贯穿全程的临床模拟数据集带你从第一张基线特征表做起一路做到回归结果并排对比与主题定制读完即可动手复现。一、先直面痛点为什么做 Table 1 总让你加班临床研究、市场分析、社科研报几乎每份材料都需要一张基线特征表——分组、均值、中位数、频数、百分比、p 值一应俱全。如果你还停留在软件导出统计量 → Excel 手工拼装 → 逐行调字号的流程里做一张表至少磨掉一小时改一次分组就得重来一遍。1.1 真正的问题不在统计而在呈现统计量谁都会算难的是把几十个变量按规范排版、把检验方法写进脚注、把分组列对齐。gtsummary 的价值正是把呈现这一步自动化它自动识别连续变量、分类变量与二分类变量自动套用合适的统计量和检验你只需要声明选哪些变量、按什么分组。1.2 安装与内置数据集install.packages(gtsummary)想抢先体验开发版可以克隆仓库后本地构建git clone https://gitcode.com/gh_mirrors/gt/gtsummary包内自带trial临床试验模拟数据200 例含年龄、肿瘤分级、治疗组、生存时间等变量下文示例都基于它。想深入实现细节核心函数源码都在R/目录下例如R/tbl_summary.R、R/tbl_regression.R。二、第一张描述性统计表三步跑通基线特征 2.1 自动识别变量类型一行出表library(gtsummary) trial | tbl_summary(include c(age, grade, response))这段代码让 gtsummary 自动为连续变量 age 计算中位数四分位距为 grade、response 计算频数与百分比并默认标注每个变量的缺失量。输出自带分组线、加粗表头与统计方法脚注规格直接对标期刊要求。2.2 分组比较add_n、add_p、bold_labels 一条龙trial | tbl_summary( by trt, # 按治疗组拆分列 include c(age, grade, response), missing no # 不单列缺失行 ) | add_n() | # 每组非缺失样本量 add_p() | # 自动选检验并给出组间 p 值 modify_header(label **变量**) | bold_labels()add_p()会自动为连续变量做 Wilcoxon 秩和检验、为分类变量做卡方检验并在脚注注明方法——这正是审稿人爱挑刺的地方。把missing改成ifany缺失统计又会回到表里。三、回归结果展示从 OR/HR 表到多模型并排描述性统计只是热身论文方法学部分更需要回归结果表这正是tbl_regression()的主场。3.1 逻辑回归一键输出 OR 与置信区间glm(response ~ trt age grade, trial, family binomial) | tbl_regression(exponentiate TRUE)gtsummary 自动识别这是 logistic 回归表头写成 Odds Ratio 与 95% CI分类变量自动补参考行因子水平的对齐不再需要你手工操心。3.2 生存模型与显著性美化换成 Cox 模型表头会自动切换为 Hazard Ratiolibrary(survival) coxph(Surv(ttdeath, death) ~ trt grade age, trial) | tbl_regression(exponentiate TRUE) | add_global_p() | bold_p(t 0.05)add_global_p()为多分类变量补充整体检验 p 值bold_p(t 0.05)让显著行自动加粗审稿人扫一眼就能抓住重点。3.3 tbl_merge把不同结局的模型并排对比当需要同时呈现肿瘤应答和生存时间两个结局时用tbl_merge()横向拼起来t1 - glm(response ~ trt grade age, trial, family binomial) | tbl_regression(exponentiate TRUE) t2 - coxph(Surv(ttdeath, death) ~ trt grade age, trial) | tbl_regression(exponentiate TRUE) tbl_merge( tbls list(t1, t2), tab_spanner c(**肿瘤应答**, **生存时间**) )两个结局的 OR 与 HR 在同一行内对齐变量层级关系自动保留是方法学表格的常见形态。四、进阶玩法内联引用、全局主题与一键导出4.1 在 R Markdown 里直接引用统计值写报告时把表格数字嵌进正文能大幅提升可复现性tbl - trial | tbl_summary(include c(age, grade, response)) # 在 Rmd 正文输出例如年龄中位数为 47Q1, Q3: 39, 56 r inline_text(tbl, variable age, column stat_0)数据一更新正文数字自动跟着变再也不会出现表里改了、正文忘改的尴尬。4.2 用全局主题统一多张表的风格set_gtsummary_theme(theme_gtsummary_compact())设置一次全文表格统一套用紧凑排版。需要微调某张表时还可以链上modify_caption()、modify_fmt_fun(p.value ~ style_pvalue(digits 3))等修饰函数细节控也能被满足。4.3 多格式导出覆盖投稿与汇报场景tbl | as_gt() | gt::gtsave(table.png) # 图片 tbl | as_gt() | gt::gtsave(table.docx) # Word tbl | as_flex_table() | flextable::save_as_docx(table.docx) # 需要深度排版的 Wordgt::gtsave()支持 png、html、docx、rtf、tex 等后缀gt、flextable、kableExtra、huxtable 等引擎各有适配场景完整对照见vignettes/articles/rmarkdown.Rmd。五、避坑清单与继续进阶的路径 最后分享几个实践中最常踩的坑变量类型决定统计量。age 若是字符型会被当分类变量逐值列出。先str(trial)检查再用as.numeric()修正。因子顺序决定输出顺序。把分组列设为factor(trt, levels c(Drug A, Drug B))列序才按你的意愿排列。缺失值策略要显式声明。missing ifany显示缺失、missing no隐藏别把默认值当结论。自定义统计用 add_stat()。想加入非标准检验时my_ttest - function(data, variable, by, ...) { t.test(data[[variable]] ~ as.factor(data[[by]]))$p.value } trial | tbl_summary(by trt, include age) | add_stat(fns everything() ~ my_ttest)想继续深入最划算的路径是啃官方教程vignettes/articles/下的tbl_summary.Rmd、tbl_regression.Rmd、themes.Rmd是系统学习入口tests/testthat/里的测试用例则是现成的行为说明书每个功能都能找到对应断言对函数行为存疑时直接翻R/下对应文件看实现比猜更快。gtsummary 的长期价值在于它把统计分析和结果呈现之间那段最琐碎的路程压缩成了一条管道代码。花一个下午把本文示例全部跑通之后每次出表、每次返修你都会比昨天的自己更快一步。现在打开 RStudio把第一张 Table 1 跑起来吧。【免费下载链接】gtsummaryPresentation-Ready Data Summary and Analytic Result Tables项目地址: https://gitcode.com/gh_mirrors/gt/gtsummary创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考