根据R中的两个列选择重复项

时间:2019-06-18 20:07:47

标签: r dataframe

我有这个文件:

Animal   birth
a     2015-09-25
a         NA
b     2015-08-26
b     2015-08-26
e     2015-10-18  
e        NA
d     2015-06-15
d     2015-06-15

我需要像这样的动物和动物:

Animal   birth
b     2015-08-26
b     2015-08-26
d     2015-06-15
d     2015-06-15

我尝试了以下代码:

new.dt= dt[(duplicated(dt$Animal) | duplicated(dt$Animal, fromLast = TRUE)) & (duplicated(dt$birth) & !is.na(dt$birth) | duplicated(dt$birth, fromLast = TRUE) & !is.na(dt$birth)), ]

我明白了:

Animal   birth
    a     2015-09-25
    b     2015-08-26
    b     2015-08-26
    e     2015-10-18  
    d     2015-06-15
    d     2015-06-15

2 个答案:

答案 0 :(得分:2)

我们可以按“动物”,“出生”和filter分组具有1个以上元素的分组

library(dplyr)
dt %>%
    na.omit %>% 
    group_by(Animal, birth) %>% 
    filter(n() >1)

答案 1 :(得分:2)

如果对整个数据帧使用duplicated,则您的方法有效。如果您要忽略其他列,则可以在dt[, c('Animal', 'birth')]

中使用duplicated
dt[duplicated(dt) | duplicated(dt, fromLast = TRUE)]
#    Animal      birth
# 1:      b 2015-08-26
# 2:      b 2015-08-26
# 3:      d 2015-06-15
# 4:      d 2015-06-15