Lazy loaded imagegtsummary + gt:R语言三线表实践

type
status
date
slug
summary
tags
category
icon
password
comment

1. 加载必要包与数据


2. 默认生成分组汇总表(基础三线表)

我们用 tbl_summary() 快速生成一个分组描述性统计表(这里分组变量为 trt,即药物分组):
说明:
  • 该表默认会自动识别变量类型,连续变量输出中位数 (四分位数),分类型变量输出频数和百分比。
  • 除了 trt 外,trial 数据集所有变量均被自动汇总展示。

3. tbl_summary() 核心参数详解与用法

gtsummary::tbl_summary() 支持多种参数,让三线表统计和格式满足各种分析需求。以下为最常用参数说明与代码示例:
参数(Argument)
英文说明(Description)
中文解释
label
specify the variable labels printed in table
自定义表格中显示的变量名称
type
specify the variable type (e.g. continuous, categorical, etc.)
强制指定变量类型(连续/分类等)
statistic
change the summary statistics presented
指定每列统计量的展示格式
digits
number of digits the summary statistics will be rounded to
结果四舍五入保留的小数位数
missing
whether to display a row with the number of missing observations
控制是否显示缺失值统计行
missing_text
text label for the missing number row
缺失行的标签文本
missing_stat
statistic(s) to show on the missing row
缺失行中显示的统计内容
sort
change the sorting of categorical levels by frequency
分类变量的排序方式
percent
print column, row, or cell percentages
百分比的计算基准(列/行/单元格)
include
list of variables to include in summary table
需要汇总展示的变量列表

3.1 只汇总指定变量 & 排除变量


3.2 指定统计量格式 statistic

灵活定义连续、分类变量的统计方式(如均值±SD、频数/比例等):

3.4 小数位控制 digits


3.5 变量标签重命名 label


3.6 百分比基准 percent


3.7 缺失值展示控制


3.8 分类变量排序 sort


3.9 强制指定变量类型 type


4. 使用 {gtsummary} 的 add_*() 函数添加统计信息

gtsummary 提供了多个 add_*() 后缀的函数,可以链式添加总体、样本量、p 值、差异、q 值、统计量标签等信息,让你的三线表功能更完整、分析结果一目了然。

4.1 增加总体(Overall)统计列

说明:表格最左侧会多出一列“Overall”,展示全体样本的描述统计量。

4.2 增加分组样本量(N)

说明:在表格左侧增加“N”一列。

4.3 增加组间差异的 P 值

说明:自动为每个变量添加合适的检验(t 检验、卡方、Fisher),结果表会多出一列 p.value。

4.4 增加均值差/比值比及置信区间

说明:连续变量为均值差及 CI,二分类变量为比值比(OR)及 CI。

4.5 增加 Q 值(多重假设校正)

说明:对 p 值进行 FDR 校正(Benjamini-Hochberg 方法),结果多一列 q.value。

4.6 增加统计量标签

说明:在每个变量名后面自动标注所用统计量格式(如“mean (sd)”)。

Tips:
  • 所有 add_*() 函数都可以与前面的 tbl_summary 链式组合。
  • 可多个函数一起用,极大丰富三线表内容与解释性。

5. 使用 {gtsummary} 函数美化和格式化三线表

gtsummary 提供一系列美化与格式化函数,可以自定义表头、分组、标题、脚注、加粗/斜体等,轻松实现高质量“出版级”表格。
函数 Function
英文说明 Description
中文解释
modify_header()
update column headers
修改/自定义列标题
modify_footnote_header()
update column header footnote
修改列标题(表头)脚注
modify_footnote_body()
update table body footnote
修改表格主体的脚注
modify_spanning_header()
update spanning headers
添加/修改跨列的大标题
modify_caption()
update table caption/title
设置表格标题/注释
bold_labels()
bold variable labels
变量名称加粗
bold_levels()
bold variable levels
分类变量的水平(分组标签)加粗
italicize_labels()
italicize variable labels
变量名称斜体
italicize_levels()
italicize variable levels
分类变量的水平斜体
bold_p()
bold significant p-values
显著性 p 值加粗

5.1 修改表头标题(modify_header)

可用 modify_header() 自定义每一列的标题文本,支持 glue 语法(如 {level}{n}):

5.2 跨列大标题(modify_spanning_header)

为分组统计量列添加统一跨列标题:

5.3 设置表格标题(modify_caption)

为表格整体加上表题说明:

5.4 添加脚注(modify_footnote)

为任意统计量列或 p 值列添加详细脚注说明:

5.5 美化变量/分组字体(加粗/斜体/突出显著性)

  • 变量标签加粗:
    • 变量水平加粗:
      • 变量标签斜体:
        • 显著 p 值加粗:

          5.6 其他表格美化主题(主题快速美化)

          gtsummary 提供一键主题美化,直接调用即可:

          Tips:
          • 上述所有美化函数均可链式组合。
          • 你可以把美化和 add_*() 一起使用,任意顺序调整,得到符合审美和期刊要求的三线表!

          6. 使用 tidyselect 语法与辅助选择函数

          6.1 全面支持 tidyselect!

          {gtsummary} 所有函数的变量选择(如 include, sort, digits, label, statistic, type 等参数)完全支持 tidyselect 辅助器,和 dplyr::select() 保持一致,极为强大且易用:
          • starts_with("xxx")
          • contains("xxx")
          • ends_with("xxx")
          • everything()
          • 以及 负号 - 排除法
          • 甚至可以用 where(is.numeric) 选择所有数值型变量
          示例:
          这样可以非常方便地批量处理复杂数据集。

          6.2 all_continuous() / all_categorical() 辅助函数

          gtsummary 还提供了便捷函数,用于批量指定所有连续型或分类变量的统计方式
          • all_continuous() 匹配所有连续型变量
          • all_categorical() 匹配所有分类变量
          示例:

          6.3 continuous2:连续变量多行摘要(期刊风多行)

          有些医学/生信/SCI 期刊要求连续变量一栏多行展示(如总例数/中位数/IQR/极值等),此时用 type = "continuous2"!
          示例:

          7. 用 {gt} 包函数进一步美化 gtsummary 表格

          当你用 gtsummary::as_gt() 把三线表转成 gt 对象后,可以用 gt 包丰富的美化函数自定义表格外观。

          7.1 高亮显著 p 值单元格

          效果:自动为所有 p < 0.2 的单元格填充淡黄色背景。

          7.2 统计量列内容居中

          效果:让所有统计量数据在列中居中显示,风格更统一。

          7.3 添加表格脚注/来源注释

          效果:表格下方自动加上来源说明或备注。

          7.4 单元格字体/背景自定义(进阶)

          效果:对特别显著的 p 值(如 < 0.2)用粗体红色加特殊背景进一步突出。

          7.5 多条件叠加美化

          所有 gt 格式化函数都可以链式组合,可以针对不同列和行条件,灵活实现复杂美化需求。

          Tips:
          • gt 包支持几乎所有 Excel/PPT/Word 能想到的表格样式需求。
          • 更多如数字格式、字体大小、行高、合并单元格等,都有专门函数。

          8. gtsummary 进阶技巧(分组显示、检验指定、表格堆叠/合并)

          8.1 控制二分类变量只显示某一水平

          默认情况下,二分类变量(如 0/1)会只会显示一行。如果你关心另一个水平(如阳性/事件),可以用 value 参数筛选:
          常用于只想显示“阳性/发病/事件”比例的临床报表。

          8.2 指定不同变量的检验方法

          add_p() 默认会自动选择检验方法(如 t 检验/卡方),你可以针对不同变量手动指定检验类型
          极适用于样本量小、不满足正态分布时。

          8.3 垂直堆叠多个三线表(tbl_stack)

          可将多张三线表纵向合并,并用 group_header 标注分块,常用于“基线特征+结局”一表展示:

          8.4 水平合并描述性统计与回归模型结果(tbl_merge)

          能将三线表与模型输出横向拼接,常用于论文主表(描述性+回归分析并列):
          适用于论文/Table 1、Table 2 的主流结构,极大提升可读性。

          9. 三线表导出:Word、图片、PDF

          无论你用 gtsummary 还是 gt,都可以方便地将高质量三线表导出为 Word、图片、PDF,直接插入论文或汇报材料。

          9.1 导出为 Word(推荐用于论文/基金)

          方法1:用 flextable 保存为 .docx
          • 运行后,R 工作目录下会出现 my_table.docx 文件,格式美观。

          9.2 导出为图片(PNG 等)

          方法2:用 gt 包直接保存 PNG
          • 可以直接插入 PPT、微信稿、Word 文档。

          9.3 导出为 PDF(论文附表/打印版)

          • 注意:图片/PDF 导出依赖 webshot2(首次用还需 webshot2::install_phantomjs())。

          9.4 其它:HTML、LaTeX、R Markdown

          • HTML:as_gt() 直接在 R Markdown/Quarto 里输出即可
          • LaTeX:gtsummary::as_kable() 可用于学术 LaTeX 表格导出
          • R Markdown:全部兼容,无缝插入

          9.5 总结 Tips

          • Word 导出:推荐 as_flex_table() + save_as_docx(),兼容性最好。
          • 图片/PDF 导出:用 gt 的 gtsave(),颜值高、代码短。
          • 需要自定义字号/纸张、边框、字体等,建议提前用 gt 美化后再导出。
          • 各导出函数都能链式接在 tbl_summary()/add_p() 后直接使用!

          10. 总结

          gtsummary + gt 组合为R用户提供了高效、灵活且出版级的医学/生信三线表解决方案。无论你是日常科研统计、临床论文、基金项目,还是期刊投稿、国际会议,都能一站式搞定高质量表格输出!

          你将收获:

          • 一行代码生成分组描述性统计三线表
          • 参数全面可控,自由定制统计量、标签、小数位、缺失显示、排序等
          • 多种add_*()函数一键补全总体、样本量、P/Q值、差异、统计标签
          • modify_*()美化函数实现任意风格/注释/字体/标题/脚注
          • 支持tidyselect语法,轻松批量选择/处理变量
          • 连续变量多行摘要(continuous2)满足医学SCI需求
          • 可与gt、flextable等R生态工具无缝衔接,导出Word、PDF、PNG、HTML、LaTeX
          • 丰富进阶用法支持:自定义检验、分块堆叠/合并表格、模型结果与描述性统计同表、全自动输出等

          小结Tips

          • 日常科研表1/附表优先推荐gtsummary,省时省心,表格美观可直接投稿
          • 复杂格式/特殊排版/国际审稿建议先用gtsummary美化后再用gt进一步自定义
          • 所有流程都可复用、批量、自动化,极大提高效率与专业性
          • R语言强大的可组合性让你轻松应对“最后一公里”的个性化表格要求

          Happy Table-Making!🥳
           
          Prev
          gtsummary 回归模型
          Next
          pivot_wider():长表 → 宽表(long → wide)
          Loading...
          Catalog
          Article List
          Evan の Logbook
          ✨ Updates
          🎨 Style Guide
          🧠 Creative Resources
          🗒️ Mind Notes
          🧭 Knowbase
          📘 SOPs
          🩺 Medical Research
          🛠️ Tech Chronicles
          💰 Fortune Blueprint
          📈 R Visionary
          📊 Statistics
          🖼️ BioVis