如何在过滤器内写入多个逻辑条件

use*_*116 3 r dplyr

这是我的数据集:

set.seed(327)

ID <- seq(1:50)

mou <- sample(c(2000, 2500, 440, 4990, 23000, 450, 3412, 4958, 745, 1000),
  50, replace=TRUE)

calls <- sample(c(50, 51, 12, 60, 90, 16, 89, 59, 33, 23, 50, 555),
  50, replace=TRUE)

rev <- sample(c(100, 345, 758, 44, 58, 334, 888, 205, 940, 298, 754),
  50, replace=TRUE)

dt <- data.frame(mou, calls, rev)
Run Code Online (Sandbox Code Playgroud)

我的动机是找到mou调用大于34且小于200且rev大于100且小于400 的平均值.我开始使用dplyr来解决这个问题,但我不太确定如何在过滤器内正确使用所需的表达式功能.

dt %>% filter(???) %>% summarize(mean_mou=mean(mou))
Run Code Online (Sandbox Code Playgroud)

你能否指导一下如何在过滤器中正确构建这个表达式.

GGa*_*mba 5

为了完整性:

如果逻辑是AND,您只需在逗号后添加多个条件:

df %>%
     filter(calls > 34, calls < 200, rev > 100, rev < 400)
Run Code Online (Sandbox Code Playgroud)

如果逻辑是OR,则必须使用通常的逻辑or符号:|

df %>%
  filter(calls > 34 | rev > 100)
Run Code Online (Sandbox Code Playgroud)

将它们链接在一起起作用,但必须注意所做的事情.例如:

df %>%
  filter(calls > 34, calls < 200 | rev > 100, rev < 400)
Run Code Online (Sandbox Code Playgroud)

手段 calls > 34 AND (calls < 200 OR rev > 100) AND rev < 400