【问题标题】:Returning only values that match two condition filter where name column could be used many times仅返回匹配两个条件过滤器的值,其中名称列可以多次使用
【发布时间】:2018-03-02 17:09:24
【问题描述】:

我试图只返回匹配两个条件过滤语句的行。
如果我按名称分组并且该名称在多行中使用,我会得到具有该名称的每一行。

name <- c("Jeff", "Jeff", "Jeff", "Jeff", "Jill", "Jill", "Jill", "Jill", "Angie", "Angie", "Angie")

total <- c(123, 234, 432, 321,  345, 456, 654, 543, 567, 678, 789)

code <- c("abc", "xyz", "lmn", "opq", "abc", "xyz", "txy", "jkl",  "xyz", "tup", "rst")

table <- data.frame(name, total, code)   

我的桌子是:

name  total code
Jeff  123   abc
Jeff  234   xyz
Jeff  432   lmn
Jeff  321   opq
Jill  345   abc
Jill  456   xyz
Jill  654   txy
Jill  543   jkl
Angie 567   xyz
Angie 678   tup
Angie 789   rst

如果我运行这段代码:

library(dplyr)  
test1 <- table %>% group_by(name) %>% 
                   filter("abc" %in% code & "xyz" %in% code)   

这给了我:

name  total code
Jeff  123   abc
Jeff  234   xyz
Jeff  432   lmn
Jeff  321   opq
Jill  345   abc
Jill  456   xyz
Jill  654   txy
Jill  543   jkl

我认为问题在于 group_by(name) 但如果我不 group_by(name) 我不能在过滤器的同一列上使用 & 语句。
我想输出:

name  total code
Jeff  123   abc
Jeff  234   xyz
Jill  345   abc
Jill  456   xyz

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您可以扩展条件来指定它。

    table %>% group_by(name) %>% 
      filter("abc" %in% code & "xyz" %in% code & (code == "abc" | code == "xyz"))
    
    # A tibble: 4 x 3
    # Groups:   name [2]
      name  total code 
      <fct> <dbl> <fct>
    1 Jeff    123 abc  
    2 Jeff    234 xyz  
    3 Jill    345 abc  
    4 Jill    456 xyz  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 2013-11-23
      相关资源
      最近更新 更多