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

如何基于Result列一致性过滤并去重Person_Id的数据集

按Person_Id过滤并保留Result一致的唯一行

原始数据

df1 <- structure(list(Person_Id = c(123L, 123L, 123L, 123L, 123L, 
                             567L, 567L, 567L, 888L, 888L), 
               Result = c("Yes", "Yes", "Yes", "Yes", "Yes", 
                          "No", "No", "No", "No", "Yes")), 
          class = "data.frame", row.names = c(NA, -10L))

需求说明

  • 移除所有Person_Id对应的Result存在差异的行(如示例中的888)
  • 对Result完全一致的Person_Id,仅保留一行数据

方法1:使用dplyr包

library(dplyr)

df2 <- df1 %>%
  group_by(Person_Id) %>%
  # 筛选出Result只有唯一值的分组
  filter(n_distinct(Result) == 1) %>%
  # 每组仅保留第一行
  slice(1) %>%
  ungroup()

方法2:Base R(无需额外包)

# 计算每个Person_Id对应的Result唯一值数量
id_check <- aggregate(Result ~ Person_Id, df1, function(x) length(unique(x)))
# 筛选出符合条件的Person_Id
valid_ids <- id_check$Person_Id[id_check$Result == 1]
# 提取有效数据并去重
df2 <- unique(df1[df1$Person_Id %in% valid_ids, ])

验证结果

执行后df2的结构与目标一致:

dput(df2)
# structure(list(Person_Id = c(123L, 567L), Result = c("Yes", "No")), class = "data.frame", row.names = c(NA, -2L))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:30:59