组的高级过滤

时间:2018-08-14 13:48:56

标签: r dplyr data.table

数据示例:

library(dplyr)
df1 <- data.frame(
ID = c(1,2,2,3,4,4,5,6,6,8,9,33,32,33,33,22,22,22,23,23),
product= c("A", "B", "B", "A", "C", "D", "C", "A", "F", "A", 
"C", "P", "R", "Q", "W", "A", "B","B", "D", "D"))

问题:

1)如果“ ID”和“产品”特征在同一“ ID”中具有不同的“产品”类型,则排除这些观察结果。例如,“ ID”:4、4和“产品”:C,D

2)如果“ ID”和“产品”功能具有相同的重复值,则保留这些观察值。例如,“ ID”:2、2和“产品”:B,B。

3)如果“ ID”和“产品”只有一个观察值,则将该观察值保留在数据框中。例如,“ ID”:A和“产品”:1.

我尝试过的事情:

df1 %>%
   group_by(ID, product) %>%
   filter(n() > 1)

预期结果

ID product
1   A           
2   B           
2   B           
3   A           
5   C           
8   A           
9   C           
32  R           
23  D
23  D

0 个答案:

没有答案