我有一个与此类似的数据集:
> dput(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
123 和 567 的 Result
值在整个数据帧中保持一致。但是,888 的 Result
值有所不同。
我想过滤这个数据集:
- 如果给定
Person_id
的结果不同,我希望将其删除。 - 如果
结果
在整个数据帧中保持一致,则为给定的Person_id
仅保留一行。
输出数据框应如下所示:
> dput(df2)
structure(list(Person_Id = c(123L, 567L),
Result = c("Yes", "No")),
class = "data.frame", row.names = c(NA, -2L))
最佳答案
使用聚合
的基本 R 方法
na.omit(aggregate(Result ~ Person_Id, df1, function(x)
ifelse(length(unique(x)) == 1, unique(x), NA)))
Person_Id Result
1 123 Yes
2 567 No
关于根据另一列中的值删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75327830/