如何在gt表格中设置两个独立分组列而非合并分组值?
在gt包中实现两个独立的行分组列
gt包原生的row_group_as_column参数仅支持将所有分组合并到单一列中,要实现两个独立的分组列,可以通过保留分组字段为数据列+合并相同值单元格+样式美化的方式模拟效果,具体代码如下:
library(gt) library(dplyr) gtcars %>% # 将需要作为分组列的mfr和year移到数据最前方 select(mfr, year, everything()) %>% gt() %>% # 合并mfr列中连续相同值的单元格 cell_merge( columns = mfr, rows = mfr == lag(mfr) | is.na(lag(mfr)) ) %>% # 合并year列中连续相同值的单元格(限定在同一制造商分组内) cell_merge( columns = year, rows = year == lag(year) & mfr == lag(mfr) ) %>% # 设置分组列的样式,区分普通数据列 tab_style( style = list( cell_text(weight = "bold"), cell_fill(color = "#f0f0f0") ), locations = cells_body(columns = c(mfr, year)) ) %>% # 加粗分组列的标题 tab_style( style = cell_text(weight = "bold"), locations = cells_column_labels(columns = c(mfr, year)) )
关键说明:
- 先通过
select()将mfr和year设为前置列,作为拟分组列 - 使用
cell_merge()合并同一分组内的重复单元格,避免重复显示分组值 - 通过
tab_style()给分组列添加样式(加粗、浅灰背景),让视觉效果更接近原生分组列
内容的提问来源于stack exchange,提问作者ksinva
相关产品推荐
相关产品推荐

