【问题标题】:dplyr filter - how to filter on the complement of multiple logical conditionsdplyr 过滤器 - 如何过滤多个逻辑条件的补充
【发布时间】:2021-12-28 22:54:34
【问题描述】:

也许我不明白过滤器在 dplyr 中的工作原理,但我认为您可以使用!在一个条件前面过滤补码。下面的第一个条件正确返回 n = 203,但我想从数据集中排除那些。不能用 !并按照我的尝试进行过滤(错误地返回 1056 个观测值而不是 1607 - 203 = 1404)。

否则,我如何轻松做到这一点?

> dat |> 
+   summarise(n = n())
# A tibble: 1 × 1
      n
  <int>
1  1607
> 
> dat |> 
+   filter(max_num > 1 & base_end_diff < 0 | max_num > 1 & mostrecent_start_diff < 0) |> 
+   summarise(n = n())
# A tibble: 1 × 1
      n
  <int>
1   203
> 
> dat |> 
+   filter(!(max_num > 1 & base_end_diff < 0 | max_num > 1 & mostrecent_start_diff < 0)) |> 
+   summarise(n = n())
# A tibble: 1 × 1
      n
  <int>
1  1056

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您的数据集中必须有NA

    这是一个例子:

    > mtcars1[10:20,]<-NA
    > 
    > mtcars1 |>
    +   summarise(n = n())
       n
    1 32
    > 
    > mtcars1 |>
    +   filter(mpg > 15 & gear < 4 | mpg > 15 & gear < 4) |>
    +   summarise(n = n())
      n
    1 7
    > 
    > mtcars1 |>
    +   filter(!(mpg > 15 & gear < 4 | mpg > 15 & gear < 4)) |>
    +   summarise(n = n())
       n
    1 14
    

    【讨论】:

    • 是的 - 我刚刚意识到。谢谢。
    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 2018-03-10
    • 2019-09-21
    • 2018-04-13
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多