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

