代码之家  ›  专栏  ›  技术社区  ›  llewmills

dplyr中的复合群内条件句

  •  0
  • llewmills  · 技术社区  · 2 年前

    在里面 this 我得到了一些关于如何使用 all() dplyr中的函数,用于捕获组中同时存在两种情况的时间。

    现在我想讨论一个更复杂的条件。

    以下面的数据帧为例

    df <- data.frame(id = factor(c(1, 2, 2, 3, 3, 4, 4)),
                     l = factor(c("a", "a", "b", "a", "c", "b", "d")))
    
    df
    
    #   id l
    # 1  1 a
    # 2  2 a
    # 3  2 b
    # 4  3 a
    # 5  3 c
    # 6  4 b
    # 7  4 d
    

    现在,根据我在上一篇帖子中得到的建议,我可以得到一个真实的身份证号码 a c 使用 全部()

    df %>%
      group_by(id) %>%
        summarise(ab = all(c("a", "c") %in% l))
    
    #   id    ab   
    #   <fct> <lgl>
    # 1 1     FALSE
    # 2 2     FALSE
    # 3 3     TRUE 
    # 4 4     FALSE
    

    现在,如果我想用这两种方法中的任何一种来获取身份证号码,我该怎么办( A. C )或者( A. b )(即我们示例中的id号2和3)?

    非常感谢您的帮助

    1 回复  |  直到 2 年前
        1
  •  1
  •   rdelrossi    2 年前
    df %>%
      group_by(id) %>%
      summarise(ab = all(c("a", "c") %in% l) | all(c("a", "b") %in% l))
    

    输出 :

    # A tibble: 4 × 2
      id    ab   
      <fct> <lgl>
    1 1     FALSE
    2 2     TRUE 
    3 3     TRUE 
    4 4     FALSE