具有多组条件的 filter()

filter() with multiple sets of conditions

我正在尝试 filter/subset 根据观察结果是否满足一组标准。 IE。应过滤 var1=2 和 var2=2 的观察值,但应排除 var1=1 和 var2=3 的观察值。因此,如果它们符合任何 1 行标准,则应包括观察结果。

当我 运行 对我的数据进行交叉制表时,结果显示有一些不应过滤的观察结果。

table (df$var1, df$var2)

     1  2  3
  1  3  5  3
  2  4  5  4
  3  8 16 12
  4 12 15 16
  5 79 83 99

然而,当我运行我的代码(如下)时,观察的数量并没有在它应该有的时候改变。

clean <- df %>% filter(
    (var1 == 1 & var2 ==1)       |
    (var1 == 2 & var2 == 1 | 2 ) |    # var1=2 and var2=1 OK,  var1=2 and var2=2 also OK
    (var1 == 3 & var2 == 2)      |
    (var1 == 4 & var2 == 2 | 3)  |
    (var1 == 5 & var2 == 3)
  )

nrow(clean)

364

试试这是否有效:

clean <- df %>% filter(
    (var1 == 1 & var2 == 1)       |
    (var1 == 2 & var2 == 1 | var2 == 2 ) |  
    (var1 == 3 & var2 == 2)      |
    (var1 == 4 & var2 == 2 | var1 == 3)  |
    (var1 == 5 & var2 == 3)
  )