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

如何使用dplyr高效为数据框添加汇总行?

如何使用dplyr高效为数据框添加汇总行?

我懂你想要的效果啦——给现有的HAVE数据框追加一行汇总记录,STUDENT列显示ALL,SCORE1和TEST列分别计算整列的总和,YEAR列留空为NA对吧?用dplyr来实现其实非常简洁,我给你一步步拆解:

首先先确认你的原始数据(我帮你整理成更规范的代码格式了):

HAVE <- data.frame(
  STUDENT = c(1,2,3,4),
  YEAR = c(2020,2020,2021,2020),
  SCORE1 = c(5,9,8,0),
  TEST = c(7,11,3,9)
)

接下来就是dplyr的解决方案,一行代码搞定绑定+汇总:

library(dplyr)

WANT <- HAVE %>%
  bind_rows(
    summarize(., 
              STUDENT = "ALL",
              YEAR = NA,
              SCORE1 = sum(SCORE1, na.rm = TRUE),
              TEST = sum(TEST, na.rm = TRUE)
    )
  )

给你解释下这段代码的逻辑:

  • 用%>%管道符把HAVE数据框传给bind_rows函数,它能轻松把原数据和我们生成的汇总行合并在一起
  • summarize(., ...)里的.代表前面传过来的HAVE数据,这样直接就能引用列名计算总和,不用重复写数据框名
  • 加na.rm = TRUE是个实用小细节,万一你的数据里有缺失值,求和也不会出错
  • 最后指定STUDENT为"ALL",YEAR为NA,完全匹配你想要的WANT结构

对了,顺带提一句:你之前写的rowbind是拼写错误哦,正确的基础R函数是rbind,不过用dplyr的方法更贴合tidyverse的风格,而且以后如果要扩展需求(比如按YEAR分组做汇总),修改起来也更方便~

运行完上面的代码,你就能得到想要的结果:

> WANT
  STUDENT YEAR SCORE1 TEST
1       1 2020      5    7
2       2 2020      9   11
3       3 2021      8    3
4       4 2020      0    9
5     ALL   NA     22   30

备注:内容来源于stack exchange,提问作者bvowe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:00:30