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

R语言gt包my_sum分组汇总行值大于0时设置黄色高亮方法

解决方案

gt的cells_summary()定位器原生支持按汇总行名称+单元格数值双层筛选,不需要额外改造数据源结构,只需要修改原有分组汇总样式的定位逻辑即可:

  • 通过summary = "my_sum"参数精准锁定所有分组下名为my_sum的汇总行,不会影响其他分组汇总行或全局汇总行
  • 通过rows参数传入逐单元格判断逻辑,仅选中数值大于0的单元格应用黄色填充
    判断逻辑直接读取汇总计算后的原始数值,不受fmt_number()等格式化函数影响,不需要额外做格式转换。
完整可运行代码
library(gt)  
library(tidyverse)

tibble(cars = c("honda", "honda", 
                "ford", "ford"), 
       mpg = c(24, 22, 
               NA, NA), 
       wt = c(NA, NA, 
              3432, 4234)
) %>%
  group_by(cars) %>%
  gt() %>%
  fmt_missing(columns = everything(),
              missing_text = "") %>%
  summary_rows(
    groups = TRUE,
    columns = c(mpg:wt),
    fns = list("my_sum" = ~sum(., na.rm = TRUE)),
    missing_text = "",
    formatter = fmt_number, 
    decimals = 0
  ) %>%
  grand_summary_rows(
    columns = c(mpg:wt),
    fns = list("my_big_sum" = ~sum(., na.rm = TRUE)),
    missing_text = "",
    formatter = fmt_number, 
    decimals = 0
  ) %>%
  tab_options(
    row_group.font.weight = "bold"
  ) %>%
  # 全局汇总行保持原有浅蓝色填充
  tab_style(
    style = list(
      cell_fill(color = "#d4ebf2")
    ),
    locations = cells_grand_summary(
      columns = c("mpg", "wt")
    )
  ) %>%
  # 修改分组汇总行的填充逻辑:仅my_sum行中值>0的单元格填浅黄色
  tab_style(
    style = list(
      cell_fill(color = "#FFFFE0")
    ),
    locations = cells_summary(
      columns = c(mpg, wt),
      summary = "my_sum", # 仅定位名为my_sum的分组汇总行
      rows = ~.x > 0 # 逐单元格判断数值大于0才选中
    )
  )
效果说明

运行代码后输出的表格符合所有需求:

  • 全局汇总行my_big_sum所有单元格统一填充#d4ebf2浅蓝色
  • 分组my_sum汇总行中,数值为0的单元格(honda组wt列、ford组mpg列)无填充,数值大于0的单元格(honda组mpg列、ford组wt列)填充#FFFFE0浅黄色
  • 原有的缺失值空显示、千分位数字格式化、分组标题加粗效果均不受影响

如果使用的gt版本低于0.9.0没有summary参数,可以把cells_summary的定位逻辑替换为rows = ~.x > 0 & grepl("my_sum", .data[["__row_label__"]])实现相同效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:09:10