如何有条件地删除R中特定于组的因子水平

时间:2019-11-11 16:52:40

标签: r dplyr subset data-manipulation

我有一个数据框,如果其关联索引的计数为<2,我想在其中过滤出Month值。

ID = c(rep("A", 5), rep("B", 5))
Month = c(
  1,
  1,
  2,
  2,
  3,
  1,
  2,
  2,
  3,
  3
)
Index = c("X1", "X1", "X2", "X2", "X3", "X1", "X2", "X2", "X2", "X3")
df = data.frame(ID, Month, Index, stringsAsFactors =  FALSE)
df$Month <- as.factor(df$Month)
df

此处,X3和X1分别仅对A和B发生一次,因此这些行将被删除。

但是,如果我尝试使用%in%过滤X3和X1的数据,它们也会从其他ID值中删除。

删除仅应针对特定组。

1 个答案:

答案 0 :(得分:1)

我们可以按列和filter

分组
library(dplyr)
df %>% 
  group_by(ID, Month, Index) %>%
  filter(n() >1)