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

R语言DataFrame按Name、Fruit匹配合并行并累加Cost值的实现方法

R DataFrame 按多列匹配累加值的高效实现方法

你的需求本质是按Name、Fruit两列分组,对Cost列执行求和聚合,完全不需要手写for循环,以下是三种常用实现方案:

方案1:dplyr实现(易读性高,常规场景首选)

# 未安装包先运行 install.packages("dplyr")
library(dplyr)

result <- df %>%
  group_by(Name, Fruit) %>%
  summarise(Cost = sum(Cost), .groups = "drop")

summarise会自动合并同分组的多行数据,.groups = "drop"用于取消结果的分组属性,避免后续操作出现异常。

方案2:Base R实现(无第三方包依赖)

用R内置的aggregate函数即可完成,不需要额外安装任何包:

# 默认输出按分组字段排序
result <- aggregate(Cost ~ Name + Fruit, data = df, FUN = sum)

# 加sort参数可保持原数据的行顺序
result <- aggregate(Cost ~ Name + Fruit, data = df, FUN = sum, sort = FALSE)

方案3:data.table实现(性能最优,适合大数据量)

如果数据量在十万行以上,推荐用data.table实现,运算效率远高于前两种方案:

# 未安装包先运行 install.packages("data.table")
library(data.table)
# 将data.frame转为data.table格式
setDT(df)
# 按两列分组求和
result <- df[, .(Cost = sum(Cost)), by = .(Name, Fruit)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:06