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

如何为R语言汇总表添加带条件计数的总计行?

解决方案:给汇总表添加统计正数行数的总计行

方法一:用janitor的adorn_totals自定义计算逻辑

原来的adorn_totals默认对列求和,你只需传入自定义函数,让它统计列中值大于0的行数即可。注意要先取消分组,否则adorn_totals会出错。

代码示例:

region <- c("R1", "R2", "R3", "R4", "R5", "R1", "R2", "R3", "R4", "R5")
housing <- c(0,1,1,1,1,0,1,0,0,1)
food <- c(1,1,0,1,1,0,1,0,0,1)
df <- data.frame(region,housing,food)

library(janitor)
library(dplyr)

df %>%
  group_by(region) %>%
  summarise(across(housing:food, sum, na.rm = TRUE)) %>%
  ungroup() %>%  # 必须取消分组,否则adorn_totals无法正常工作
  adorn_totals(where = "row", name = "Total", 
               fun = function(x) sum(x > 0))  # 自定义统计正数行数的函数

运行后,总计行的housing列会显示汇总表中housing值大于0的行数(示例中为4),food列同理。

方法二:用dplyr原生函数直接添加总计行

如果不想依赖janitor包,用dplyr的add_row结合across就能简洁实现需求:

df %>%
  group_by(region) %>%
  summarise(across(housing:food, sum, na.rm = TRUE)) %>%
  add_row(
    region = "Total",
    across(housing:food, ~sum(.x > 0))  # 对每列统计正数行数
  )

这个方法用dplyr原生函数完成,逻辑直观且无需额外加载包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:00:00