我有这个文件:
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
答案 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