根据列的值查找重复的ID

时间:2018-12-14 08:59:03

标签: r dataframe

我正在尝试找到一种方法来执行此操作,看来它应该足够简单,但我一直在努力。

ID Color   
1 Blue  
2 Red  
2 Green  
2 Blue  
1 Green  
3 Red  
3 Blue

我只想保留重复行,它们都是 蓝色绿色。因此,在我的示例中,仅ID 1。

edit:很抱歉,应该更清楚一些,2不是输出,因为它也具有红色值。我正在寻找只有蓝色和绿色值的重复行。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

使用底数R ave,我们选择其中仅包含ID“蓝色”或“绿色”的Color

df[with(df, ave(Color == "Blue" | Color == "Green", ID, FUN = all)), ]

#  ID Color
#1  1  Blue
#5  1 Green

答案 1 :(得分:2)

按“ ID”分组后,检查all的“蓝色”和“绿色”值是否为%in%“颜色”列,并且{{1只有两个不同的“颜色”类别}}行

filter

数据

library(dplyr)
df1 %>%
   group_by(ID) %>%
   filter(all(c("Blue", "Green") %in% Color  & n_distinct(Color) == 2))
# A tibble: 2 x 2
# Groups:   ID [1]
#    ID Color
#  <int> <chr>
#1     1 Blue 
#2     1 Green