删除/覆盖重复的信息行

时间:2015-03-29 04:09:07

标签: r duplicates filtering duplicate-removal

您好我有一个数据集,我会保持它非常基本,但实际上它要复杂得多。

 mydata= data.frame(group=c(1,1,1,2,2,3,3,3), value=c(NA, 5,3,2,NA,NA,NA,9),value2=c(6,6,9,8,8,99,99,99))

我在第一列中有不同的组。第二列是造成我问题的原因。偶尔在我的数据中有重复的行,在某种意义上,通过将value1替换为NA,为相同的value2 +组合组合创建了一个额外的行。

例如,除了NA / 5之外,第1行和第2行是相同的。我考虑第2行,使用' 5'在' value1'列是正确的行和正确的值。

我是否有办法过滤此数据集以删除重复项,因为重复项被视为每个值都匹配的行,除了' value1',按'组&#39分组;柱即可。此外,如果这可以通过不涉及过滤纳斯的方式来完成 - 它们只是一个例子,在我的真实场景中,它们可能是' XYZ'

所以理想的解决方案是删除:

第1行, 第4行, 第5行 第6行,

结果数据集=第2,3,7行

1 个答案:

答案 0 :(得分:2)

基于描述

library(dplyr)
mydata %>%
        group_by(group) %>% 
       filter( !((duplicated(value2)|duplicated(value2,
                   fromLast=TRUE)) & is.na(value)))
#    group value value2
# 1     1     5      6
# 2     1     3      9
# 3     2     2      8
# 4     3     9     99