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

如何在R语言GT包中实现类似collapse_rows的重复行合并

用GT包实现类似collapse_rows的单元格合并效果

步骤1:准备数据并标记分组首行

先构造示例数据,再给每组(Name/Mean/Median完全相同的行)标记首行,方便后续处理:

library(gt)
library(dplyr)

# 原始数据框
df <- data.frame(
  Name = c("Boat", "Boat", "Boat", "Car", "Car"),
  Mean = c(7,7,7,4,4),
  Median = c(5,5,5,8,8),
  Comment = c("Can float.", "Has been known to sink.", "Once in a lifetime experience.", "Has wheels", "Can't float.")
)

# 标记每组的第一行
df <- df %>%
  group_by(Name, Mean, Median) %>%
  mutate(is_first = row_number() == 1) %>%
  ungroup()

步骤2:用GT构建目标表格

通过隐藏非首行的前三列内容、添加Comment列缩进,实现类似合并行的视觉效果:

gt_table <- df %>%
  gt() %>%
  # 隐藏非首行的Name/Mean/Median内容
  fmt_missing(
    columns = c(Name, Mean, Median),
    rows = !is_first,
    missing_text = ""
  ) %>%
  # 给非首行的Comment添加缩进,优化排版
  tab_style(
    style = cell_text(indent = px(20)),
    locations = cells_body(columns = Comment, rows = !is_first)
  ) %>%
  # 调整边框样式,让合并区域更连贯
  tab_options(
    column_labels.border.bottom.style = "solid",
    table.border.top.style = "hidden",
    table.border.bottom.style = "hidden"
  )

# 输出HTML格式表格
gt_table

效果说明

运行代码后生成的HTML表格会:

  • 同一组的Name/Mean/Median仅在第一行显示,后续行对应位置为空
  • Comment列每行保留原始内容,非首行自动缩进,和你期望的排版一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:56:22