如何使用两个分组变量为R数据框添加分组总计行?
解决方案
下面提供两种高效实现需求的方法,均基于R语言常用的数据处理工具:
方法1:使用dplyr(tidyverse生态)
适合需要灵活自定义逻辑的场景,通过分组后为每个组追加总计行,再重新组合数据框:
library(dplyr) data_with_totals <- data %>% group_by(Group) %>% group_modify(~ bind_rows(.x, tibble(Gender = "Total", Y = sum(.x$Y), N = sum(.x$N)))) %>% ungroup() print(data_with_totals)
逻辑说明
group_by(Group):按Group列进行分组group_modify:对每个分组单独执行操作,用bind_rows将原分组数据与手动构造的总计行合并(总计行的Gender设为"Total",Y和N取分组内的求和值)ungroup():取消分组状态,恢复普通数据框格式
方法2:使用janitor包(更简洁)
janitor包的adorn_totals函数专门用于添加各类总计行,配合分组操作可以快速实现需求:
library(janitor) library(dplyr) data_with_totals <- data %>% group_by(Group) %>% adorn_totals("row", name = "Total") %>% ungroup() print(data_with_totals)
逻辑说明
adorn_totals("row", name = "Total"):在每个分组的末尾添加一行总计,指定该行的Gender值为"Total",自动对数值列(Y和N)求和- 分组后执行该函数,会自动为每个
Group生成独立的总计行
两种方法最终输出结果均与你期望的格式一致。
内容的提问来源于stack exchange,提问作者prosopagnosia
相关产品推荐
相关产品推荐

