【问题标题】:Filter tibble by group按组过滤小标题
【发布时间】:2021-07-15 17:42:47
【问题描述】:

鉴于我在下面的标题test,我只想保留siren_ent 等于“A”的行。
条件是:regsiege_fare 列永远不等于 region_etab 而当 siren_ent 等于“B”时,至少有一行 region_etab = regsiege_fare。

在此先感谢

test <- tibble(
  siren_ent = c("A","A","A","B","B"),
  region_etab = c("93","11","24","24","32"),
  regsiege_fare = c("28","28","28","32","32")
)

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    可能是这个

    library(dplyr)
    test %>% 
        group_by(siren_ent) %>% 
        filter(!any(region_etab == regsiege_fare)) %>%
        ungroup
    

    -输出

    # A tibble: 3 x 3
      siren_ent region_etab regsiege_fare
      <chr>     <chr>       <chr>        
    1 A         93          28           
    2 A         11          28           
    3 A         24          28          
    

    【讨论】:

      【解决方案2】:

      使用subset 的基本 R 选项

      subset(
          test,
          !siren_ent %in% siren_ent[region_etab == regsiege_fare]
      )
      

      给予

      # A tibble: 3 x 3
        siren_ent region_etab regsiege_fare
        <chr>     <chr>       <chr>
      1 A         93          28
      2 A         11          28
      3 A         24          28
      

      【讨论】:

        猜你喜欢
        • 2017-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 2020-11-03
        相关资源
        最近更新 更多