如何在tibble表格底部添加列值求和汇总行(替代bind_rows法)
在R tibble中添加汇总行的更优方法
方法1:使用janitor包的adorn_totals()(最简洁)
janitor包的adorn_totals()是专门为这类需求设计的,一行代码就能完成,无需手动计算汇总再合并:
先安装并加载依赖包:
install.packages("janitor") library(janitor) library(tibble) # 模拟你的原始数据 df <- tibble( compound = c("A", "B", "C"), `2023` = c(211, 6410, 2598), `2024` = c(306, 9132, 3764), `2025` = c(427, 12664, 5250), `2026` = c(548, 16187, 6735), `2027` = c(631, 18668, 7760) ) # 一键添加汇总行 df %>% adorn_totals("row", name = "total")
运行后会自动识别数值列计算总和,非数值列(如compound)填充指定的"total",直接得到你要的结果。
方法2:dplyr原生方法(无需额外包)
如果不想安装新包,用dplyr的链式语法也能实现,代码紧凑且风格统一:
library(dplyr) df %>% add_row( compound = "total", across(`2023`:`2027`, sum) )
这里across()指定需要计算总和的列范围,列数越多,越能体现这种写法的高效性,避免手动逐个列写sum()。
对比bind_rows()的优势
- 无需单独生成汇总表再合并,代码逻辑更连贯,行数更少
- janitor的方法会自动处理列类型,避免手动合并可能出现的类型错误
- dplyr原生写法贴合tidyverse生态,和现有数据处理流程更兼容
内容的提问来源于stack exchange,提问作者Rob Hanssen
相关产品推荐
相关产品推荐

