You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R的gt包将两个表格横向并排并添加统一标题?

解决方案

要在gt中实现两个表格横向并排并添加统一标题,你可以通过分别创建两个gt表格对象,再用cols_bind()合并,配合tab_spanner()添加分组标签,最终实现需求。以下是完整代码和说明:

步骤1:准备示例数据(模拟你的tableA和tableB)

# 模拟你的数据结构
tableA <- data.frame(
  effect = c("X.", "Y.", "Z."),
  f_value = c(1, 2, 9),
  formatted_p_value = c(0.5, 0.03, 0.001)
)

tableB <- data.frame(
  effect = c("X.", "Y.", "Z."),
  f_value = c(3, 4, 10),
  formatted_p_value = c(0.05, 0.01, 0.001)
)

步骤2:分别创建两个gt表格

先为两个表格设置相同的格式(和你原代码的格式保持一致):

library(gt)

gt_A <- tableA %>%
  gt() %>%
  fmt_number(
    columns = everything(),
    decimals = 3
  ) %>%
  cols_label(
    effect = md("**Effect**"),
    f_value = md("**F Value**"),
    formatted_p_value = md("**P Value**")
  )

gt_B <- tableB %>%
  gt() %>%
  fmt_number(
    columns = everything(),
    decimals = 3
  ) %>%
  cols_label(
    effect = md("**Effect**"),
    f_value = md("**F Value**"),
    formatted_p_value = md("**P Value**")
  )

步骤3:合并表格并添加统一标题和分组标签

用cols_bind()横向合并两个gt对象,再用tab_spanner()为两组列添加"A:"和"B:"的分组标签,最后设置统一表头:

combined_gt <- cols_bind(gt_A, gt_B) %>%
  tab_spanner(
    label = md("**A:**"),
    columns = 1:3  # 对应tableA的列
  ) %>%
  tab_spanner(
    label = md("**B:**"),
    columns = 4:6  # 对应tableB的列
  ) %>%
  tab_header(
    title = md("**Table 2: Type 3 Fixed Effects**")
  )

# 输出表格
combined_gt

关键说明

  • cols_bind()是gt包专门用于横向合并两个gt表格的函数,需要确保两个表格的行数一致(你的场景满足这个条件)。
  • tab_spanner()用于为多列添加分组标签,对应你需求中的"A:"和"B:"。
  • 格式设置(fmt_number、cols_label)需要在合并前分别应用到两个表格,保证格式统一。

优化版:避免重复列

如果你的effect列内容完全一致,也可以优化为只保留一列effect,让表格更紧凑:

# 合并数据时去掉tableB的effect列
table_combined <- cbind(tableA, tableB[, -1])

table_combined %>%
  gt() %>%
  fmt_number(
    columns = everything(),
    decimals = 3
  ) %>%
  cols_label(
    effect = md("**Effect**"),
    f_value = md("**A: F Value**"),
    formatted_p_value = md("**A: P Value**"),
    f_value.1 = md("**B: F Value**"),
    formatted_p_value.1 = md("**B: P Value**")
  ) %>%
  tab_spanner(
    label = md("**A:**"),
    columns = c(f_value, formatted_p_value)
  ) %>%
  tab_spanner(
    label = md("**B:**"),
    columns = c(f_value.1, formatted_p_value.1)
  ) %>%
  tab_header(
    title = md("**Table 2: Type 3 Fixed Effects**")
  )

内容的提问来源于stack exchange,提问作者Kelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 08:30:23