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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:01:01