在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
相关产品推荐
相关产品推荐

