Evan の Logbook
✨ Updates
🎨 Style Guide
🧠 Creative Resources
🗒️ Mind Notes
🧭 Knowbase
📘 SOPs
🩺 Medical Research
🛠️ Tech Chronicles
💰 Fortune Blueprint
📈 R Visionary
📊 Statistics
🖼️ BioVis
gtsummary + 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...
YouTube 使用笔记