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

如何用R生成带嵌套层级的均值展示表格?gt包使用遇困

解决方案

1. "nested"术语的正确性

你的用法完全准确,这里称这类多层级分组为**nested(嵌套)**是恰当的——species作为island下的子类别,呈现明确的层级嵌套关系。

2. 无需更换gt包,可实现嵌套汇总表格

gt本身支持添加层级汇总行,以下是基于palmerpenguins数据集的完整实现,能同时展示island分组下species的均值,以及island层级的汇总均值:

先加载包并预处理数据:

library(gt)
library(palmerpenguins)
library(dplyr)

# 计算各层级均值,添加island汇总行
penguin_summary <- penguins %>%
  filter(!is.na(body_mass_g)) %>%
  group_by(island, species) %>%
  summarise(mean_mass = mean(body_mass_g), .groups = "drop") %>%
  bind_rows(
    penguins %>%
      filter(!is.na(body_mass_g)) %>%
      group_by(island) %>%
      summarise(species = "Total", mean_mass = mean(body_mass_g), .groups = "drop")
  ) %>%
  arrange(island, species)

再用gt构建嵌套表格:

penguin_summary %>%
  gt(groupname_col = "island") %>%
  # 格式化均值列
  fmt_number(columns = mean_mass, decimals = 1) %>%
  # 加粗标记汇总行
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = species == "Total")
  ) %>%
  # 设置表头与列名
  tab_header(title = "企鹅体重均值(按岛屿-物种嵌套分组)") %>%
  cols_label(
    species = "物种",
    mean_mass = "平均体重(g)"
  ) %>%
  # 优化层级间距
  opt_vertical_padding(scale = 1.2)

这段代码会生成嵌套结构的表格:每个island作为主分组,下方列出对应species的均值,最后一行是该岛屿的总均值,汇总行通过加粗突出显示。

3. 备选方案(针对更复杂嵌套需求)

如果需要实现Soininen等人2013年论文中更复杂的嵌套格式(如单元格合并、多层级缩进等),可以考虑:

  • flextable:对复杂表格格式支持更灵活,适合Word输出场景
  • kableExtra:结合knitr使用,适配Markdown/LaTeX输出的嵌套表格

但针对你的核心需求,gt包完全足够实现嵌套汇总功能,无需更换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:10:52