基于r中的两个列选择重复项
我有这个档案:基于r中的两个列选择重复项,r,dataframe,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
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
我们可以按“动物”、“出生”和
筛选对超过1个元素的组进行分组
library(dplyr)
dt %>%
na.omit %>%
group_by(Animal, birth) %>%
filter(n() >1)
我们可以按“动物”、“出生”和筛选对超过1个元素的组进行分组
library(dplyr)
dt %>%
na.omit %>%
group_by(Animal, birth) %>%
filter(n() >1)
如果对完整的数据帧使用复制的
,则您的方法有效。如果您想忽略其他列,您可以在duplicated
中使用dt[,c('Animal','birth')]
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
如果对完整的数据帧使用复制的
,则您的方法有效。如果您想忽略其他列,您可以在duplicated
中使用dt[,c('Animal','birth')]
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
你是最棒的……)你是最棒的……)