我正在尝试找到一种方法来执行此操作,看来它应该足够简单,但我一直在努力。
ID Color
1 Blue
2 Red
2 Green
2 Blue
1 Green
3 Red
3 Blue
我只想保留重复行,它们都是 蓝色和绿色。因此,在我的示例中,仅ID 1。
edit:很抱歉,应该更清楚一些,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