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

如何在R的gt包中实现双分组表格(附数据及尝试代码)

用gt包生成双分组表格的实现方案

1. 数据准备(以dplyr函数信息为例)

先确保数据整理成包含两级分组列的结构,比如category(一级分组)和sub_category(二级分组):

# 构造示例数据(若你的数据已处理好可跳过)
library(tibble)
library(dplyr)
library(tidyr)

dplyr_funcs <- tibble(
  category = c("行操作", "行操作", "列操作", "列操作", "列操作"),
  sub_category = c("筛选", "排序", "选择", "变换", "汇总"),
  function_name = c("filter()", "arrange()", "select()", "mutate()", "summarise()"),
  description = c("按条件筛选行", "按列值排序行", "选择指定列", "创建或修改列", "对列进行聚合计算")
)

2. 生成双分组表格

gt包实现双分组的核心是利用分组列定义层级,结合函数自定义分组范围:

library(gt)

# 生成行双分组表格
dplyr_funcs %>%
  gt(groupname_col = "category") %>%  # 指定顶级分组列
  tab_row_group(
    group = "行操作",
    rows = sub_category %in% c("筛选", "排序")
  ) %>%
  tab_row_group(
    group = "列操作",
    rows = sub_category %in% c("选择", "变换", "汇总")
  ) %>%
  # 美化表格样式
  tab_header(
    title = "dplyr函数分类汇总",
    subtitle = "按操作类型双分组展示"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_row_groups()
  ) %>%
  tab_style(
    style = cell_text(style = "italic"),
    locations = cells_column_labels()
  )

3. 宽表场景的列双分组实现

如果你的数据已通过pivot_wider()转为宽表,可通过tab_spanner()实现列维度的双分组:

# 先转成宽表
wide_data <- dplyr_funcs %>%
  pivot_wider(names_from = sub_category, values_from = function_name)

# 生成列双分组表格
wide_data %>%
  gt() %>%
  tab_spanner(
    label = "行操作",
    columns = c(筛选, 排序)
  ) %>%
  tab_spanner(
    label = "列操作",
    columns = c(选择, 变换, 汇总)
  )

关键注意点

  • 若之前用unnest_longer()后分组混乱,可先通过dplyr::group_by(category, sub_category)预分组,再传入gt确保层级正确
  • groupname_col用于指定顶级分组列,tab_row_group()可手动调整分组范围,适合自定义分组逻辑的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:22:12