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

在R的gt包中为堆叠表格添加垂直跨栏标签的方法

我来帮你搞定这个需求!用R的gt包就能完美实现你要的侧边垂直跨栏标签+上下堆叠表格的效果,我会一步步给你演示代码和逻辑:

第一步:加载所需包并模拟数据

首先我们需要tidyverse来处理数据,gt来生成美观的表格。先模拟一个包含colour、day和数值列的数据集(你可以替换成自己的真实数据):

library(tidyverse)
library(gt)

# 模拟示例数据(替换成你的真实数据即可)
set.seed(123)
df <- tibble(
  colour = sample(c("red", "blue", "green", "yellow"), 100, replace = TRUE),
  day = sample(c("Mon", "Tue", "Wed", "Thu", "Fri"), 100, replace = TRUE),
  value = rnorm(100, mean = 50, sd = 10)
)

第二步:分别分组统计

按colour和day分组,计算均值、标准差和样本量,同时统一列名方便后续合并:

# 按colour分组统计
stats_colour <- df %>%
  group_by(colour) %>%
  summarise(
    mean_value = mean(value, na.rm = TRUE),
    sd_value = sd(value, na.rm = TRUE),
    n = n()
  ) %>%
  rename(类别 = colour) %>%  # 统一列名,方便合并
  mutate(分组 = "按Colour分组")

# 按day分组统计
stats_day <- df %>%
  group_by(day) %>%
  summarise(
    mean_value = mean(value, na.rm = TRUE),
    sd_value = sd(value, na.rm = TRUE),
    n = n()
  ) %>%
  rename(类别 = day) %>%  # 统一列名
  mutate(分组 = "按Day分组")

# 合并两个统计结果
combined_stats <- bind_rows(stats_colour, stats_day)

第三步:生成带垂直侧边标签的堆叠表格

这里用gt的行组(tab_row_group)功能来实现侧边垂直跨栏标签,同时隐藏多余的列,调整样式让表格更美观:

gt_table <- combined_stats %>%
  gt() %>%
  # 创建两个行组,对应Colour和Day的统计结果
  tab_row_group(
    group = "按Colour分组",
    rows = 分组 == "按Colour分组",
    label = md("**按Colour分组**")
  ) %>%
  tab_row_group(
    group = "按Day分组",
    rows = 分组 == "按Day分组",
    label = md("**按Day分组**")
  ) %>%
  # 将"类别"列设为侧边列(stub),显示具体的colour/day值
  tab_stubhead_label(label = "类别") %>%
  # 设置行组标签垂直显示,加粗并添加背景色
  tab_style(
    style = list(
      cell_text(angle = 90, align = "center", weight = "bold"),
      cell_fill(color = "#f5f5f5")
    ),
    locations = cells_row_groups()
  ) %>%
  # 重命名统计列,用斜体强调
  cols_label(
    mean_value = "*均值*",
    sd_value = "*标准差*",
    n = "*样本量*"
  ) %>%
  # 格式化数值,保留两位小数
  fmt_number(columns = c(mean_value, sd_value), decimals = 2) %>%
  # 隐藏用于分组的"分组"列
  cols_hide(columns = 分组) %>%
  # 添加行条纹,提升可读性
  opt_row_striping() %>%
  # 调整表格样式细节
  tab_options(
    row_group.background.color = "#f5f5f5",
    row_group.border.top.width = px(2),
    row_group.border.bottom.width = px(2),
    table.width = "60%"
  )

# 查看最终表格
gt_table

效果说明

  • 表格左侧会有垂直显示的跨栏标签:"按Colour分组"和"按Day分组",分别对应上下两个统计模块,完全避免了水平标签过宽的问题。
  • 侧边列显示具体的colour或day值,右侧是对应的统计量,结构清晰。
  • 你可以根据自己的需求调整样式(比如颜色、字体、表格宽度等),或者替换列名、统计方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:40:39