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

如何在使用group_by和summarise后安全去除数据重复?

问题描述

首先定义数据框:

test_df <- tibble(
  Project = c("Project 1","Project 1","Project 2","Project 3","Project 3","Project 3"),
  Cost = c(100,50,400,50,75,150),
  `Percent Over Cost` = c(.25,.25,.14,.05,.05,.05)
)

需求:按Project分组求和Cost,但不汇总Percent Over Cost,最终每个Project对应一行数据(共3行)。

尝试了以下代码,虽然实现了Cost求和,但Project仍重复:

test_df %>% 
  group_by(Project) %>% 
  summarise(
    Project,
    `Percent Over Cost`,
    Cost = sum(Cost)
  )

用unique()处理结果能得到预期效果,但不确定这是否是不良实践,想知道有没有更优实现方式。

解决方案

因为每个Project对应的Percent Over Cost值是唯一的(同一项目下该值没有差异),可以在summarise步骤直接提取该项目对应的唯一值,避免后续再用unique()处理,代码更简洁且逻辑清晰:

test_df %>% 
  group_by(Project) %>% 
  summarise(
    `Percent Over Cost` = first(`Percent Over Cost`), # 也可以用unique()或nth(1)
    Cost = sum(Cost)
  )

补充说明

这种写法比先生成重复行再去重更靠谱:

  • 同一项目下Percent Over Cost值相同时,first()、unique()都能拿到正确结果
  • 要是哪天数据里某个项目的Percent Over Cost出现不一致的情况,这种写法会直接暴露问题(比如unique()会返回多个值导致报错),而事后用unique()处理可能会悄悄掩盖这个数据异常,留下隐患。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:10:25