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

R语言按GROUP分组计算唯一CODE平均PRICE的实现问题

问题原因

原有代码使用mutate()仅会为每行赋值分组计算后的平均PRICE,不会修改原始数据的行数,所以同一GROUP+CODE组合的多条记录会全部保留,最终出现重复行。

最优解决方案(推荐,大数据集效率更高)

直接将mutate()替换为summarise()即可,summarise()会对每个分组仅返回1行结果,自动实现GROUP+CODE去重的需求:

library(dplyr) 
df <- df %>%
  group_by(GROUP, CODE)  %>%
  summarise(PRICE = mean(PRICE), .groups = "drop")

其中.groups = "drop"参数可以直接取消分组,不需要额外调用ungroup()。

原有代码基础上修改的方案

如果需要保留你现有代码的逻辑,只需在末尾添加distinct()语句去重即可:

library(dplyr) 
df <- df %>%
  group_by(CODE, GROUP)  %>%
  mutate(PRICE = mean(PRICE))  %>%
  ungroup() %>%
  distinct(GROUP, CODE, .keep_all = TRUE)

.keep_all = TRUE参数会保留去重后行的所有列数值,符合你的需求。

最终输出示例

使用你提供的测试数据运行后,结果如下,无重复行:

GROUP  CODE PRICE
  <chr> <dbl> <dbl>
1 1T      349  0.64
2 1T      602  1.27
3 1T      622  1.96
4 2T      622  5.13
5 3T      343  7.99
6 3T      349  3.9 
7 4T      320  5.64
8 4T      622  0.85

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:54:03