布尔表达式 - 如果 2 个或更多条件为真
Boolean expression - if 2 or more conditions True
我正在尝试根据某些条件创建一个 dplyr 过滤器,假设有三个条件,condition1、condition2 和 condition3。
如果任何两个或多个条件为真,我希望它总体评估为真,
知道如何在 R 中轻松地做到这一点吗?我可以用每种条件组合做出很长的表达,但希望更简单,
非常感谢
编辑:
请求的 Reprex
df %>%
filter(condition1|condition2|condition2)
我想要 df 的子集,其中两个或更多以上条件为真
这是一个 dplyr
方法。你也可以使用 rowwise
和 c_across
如果你想对它进行严格的 tidyverse-y。
library(dplyr)
df <- tibble(a = c(T, T, F), b = c(F, T, T), c = c(T, F, F))
df
# A tibble: 3 x 4
a b c truth_ct
<lgl> <lgl> <lgl> <dbl>
1 TRUE FALSE TRUE 2
2 TRUE TRUE FALSE 2
3 FALSE TRUE FALSE 1
df %>%
mutate(truth_ct = rowSums(.)) %>%
filter(truth_ct >= 2)
# A tibble: 2 x 4
a b c truth_ct
<lgl> <lgl> <lgl> <dbl>
1 TRUE FALSE TRUE 2
2 TRUE TRUE FALSE 2
rowwise
方法:
df %>%
rowwise() %>%
mutate(truth_ct = sum(c_across(a:c))) %>%
filter(truth_ct >= 2)
使用reduce
library(dplyr)
library(purrr)
df %>%
filter(reduce(cur_data(), `+`) >=2)
# A tibble: 2 x 3
a b c
<lgl> <lgl> <lgl>
1 TRUE FALSE TRUE
2 TRUE TRUE FALSE
我正在尝试根据某些条件创建一个 dplyr 过滤器,假设有三个条件,condition1、condition2 和 condition3。 如果任何两个或多个条件为真,我希望它总体评估为真,
知道如何在 R 中轻松地做到这一点吗?我可以用每种条件组合做出很长的表达,但希望更简单,
非常感谢
编辑:
请求的 Reprex
df %>%
filter(condition1|condition2|condition2)
我想要 df 的子集,其中两个或更多以上条件为真
这是一个 dplyr
方法。你也可以使用 rowwise
和 c_across
如果你想对它进行严格的 tidyverse-y。
library(dplyr)
df <- tibble(a = c(T, T, F), b = c(F, T, T), c = c(T, F, F))
df
# A tibble: 3 x 4
a b c truth_ct
<lgl> <lgl> <lgl> <dbl>
1 TRUE FALSE TRUE 2
2 TRUE TRUE FALSE 2
3 FALSE TRUE FALSE 1
df %>%
mutate(truth_ct = rowSums(.)) %>%
filter(truth_ct >= 2)
# A tibble: 2 x 4
a b c truth_ct
<lgl> <lgl> <lgl> <dbl>
1 TRUE FALSE TRUE 2
2 TRUE TRUE FALSE 2
rowwise
方法:
df %>%
rowwise() %>%
mutate(truth_ct = sum(c_across(a:c))) %>%
filter(truth_ct >= 2)
使用reduce
library(dplyr)
library(purrr)
df %>%
filter(reduce(cur_data(), `+`) >=2)
# A tibble: 2 x 3
a b c
<lgl> <lgl> <lgl>
1 TRUE FALSE TRUE
2 TRUE TRUE FALSE