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

如何对重复分组数据求均值并合并行?(R语言实现)

解决R语言分组聚合去重求均值的问题

问题说明

你有如下重复的分组数据:

Name id   total   
Abc  101, 500, 
Abc  101, 500, 
Def  102, 400, 
Def  102, 400, 
Def  102, 400, 

需要按Name和id分组,对total求均值后合并为唯一行,得到结果:

Abc 101 500
Def 102 400

你的代码问题

  1. 第一段代码:分组列名与数据实际列名不匹配(数据里是Name/id,你写的Employee.ID),聚合列名错误(数据里是total,你写的Total.Bonus),还缺少闭合括号。
  2. 第二段代码:summarise_each已经被dplyr弃用,现在推荐用across;同时语法存在括号错位问题,matches的用法也不符合你的需求。

正确实现步骤

1. 数据清理(处理逗号)

原始数据里的列带有逗号,需要先清理并转换为数值类型:

library(dplyr)

# 模拟原始数据(如果是从文件读取,替换为read.table/read.csv等)
df <- data.frame(
  Name = c("Abc", "Abc", "Def", "Def", "Def"),
  id = c("101,", "101,", "102,", "102,", "102,"),
  total = c("500,", "500,", "400,", "400,", "400,")
)

# 清理逗号并转换数据类型
df_cleaned <- df %>%
  mutate(
    id = as.integer(gsub(",", "", id)),
    total = as.numeric(gsub(",", "", total))
  )

2. 分组聚合求均值

按Name和id分组,计算total的均值:

result <- df_cleaned %>%
  group_by(Name, id) %>%
  summarise(total = mean(total, na.rm = TRUE), .groups = "drop")

# 查看结果
print(result)

执行后会得到你想要的输出:

# A tibble: 2 × 3
  Name    id total
  <chr> <int> <dbl>
1 Abc     101   500
2 Def     102   400

如果你的原始数据读取后已经是无逗号的数值类型,可以直接跳过数据清理步骤,仅执行分组聚合部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:12:16