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

