根据组的行长对分组的变量进行条件过滤

时间:2019-02-19 15:13:08

标签: r group-by dplyr subset do.call

一个简单的查询,我无法理解:

样本数据集:

   ACH_DATE   CODE
1 31OCT2018 A81001
2 31JAN2019 A81001
3 31OCT2018 A81002
4 31JAN2019 A81002
5 31OCT2018 A81003
6 31JAN2019 A81004

我想在group_by变量上使用CODE,并在ACH_DATE上进行过滤,从而如果一个组有多行,则删除ACH_DATE == "31OCT2018"所在的行。 / p>

样本数据:

df <- structure(list(ACH_DATE = c("31OCT2018", "31JAN2019", "31OCT2018", 
"31JAN2019", "31OCT2018", "31JAN2019"), CODE = c("A81001", "A81001", 
"A81002", "A81002", "A81003", "A81004")), row.names = c(NA, 6L
), class = "data.frame")

1 个答案:

答案 0 :(得分:1)

我们按“ CODE”分组,创建一个具有行数和“ ACH_DATE”的逻辑向量

library(dplyr)
df %>%
  group_by(CODE) %>% 
  filter((n() > 1 &  ACH_DATE != "31OCT2018") | n() == 1)