【问题标题】:Conditional filtering on a grouped variable, based on row length of group基于组的行长度对分组变量进行条件过滤
【发布时间】:2019-02-19 15:13:07
【问题描述】:

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

样本数据集:

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

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

样本数据:

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")

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 2021-10-30
      • 2020-04-01
      • 2017-03-07
      • 1970-01-01
      • 2019-10-28
      • 2023-02-21
      • 1970-01-01
      相关资源
      最近更新 更多