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

R语言dplyr按分组基于其他列条件使用distinct()去重实现方法

解决方案

依赖包

library(dplyr)

通用处理代码(同时适配基础场景和复杂场景)

dat_processed <- dat %>%
  # 按id、dt分组,同一id下相同dt的行会被分到同一组
  group_by(id, dt) %>%
  filter(
    # 组内存在ind=1时,仅保留所有ind=1的行
    if (any(ind == "1")) ind == "1" 
    # 组内全为ind=0时,仅保留1行
    else row_number() == 1
  ) %>%
  ungroup()

逻辑说明

上述代码完全匹配你总结的三类去重规则:

  • 相同dt的行ind全部为1:any(ind == "1")判定为真,保留所有ind=1的行(即全部行),符合规则1
  • 相同dt的行ind全部为0:any(ind == "1")判定为假,仅保留组内第一行,符合规则2
  • 相同dt的行同时存在ind=0和ind=1:any(ind == "1")判定为真,过滤掉所有ind=0的行,仅保留ind=1的行,符合规则3

注:如果你的ind列是数值类型,将判断条件中的"1"改为1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:02