R dplyr-按多种条件过滤

anb*_*nba 5 r filter dplyr

我有如下的data.frame

ID  country age
1   X   83
2   X   15
3   Y   2
4   Y   12
5   X   2
6   Y   2
7   Y   18
8   X   85
Run Code Online (Sandbox Code Playgroud)

我需要过滤年龄在10岁以下且同时在80岁以上的行。如何以最简单的方式进行过滤?对于一个条件,我可以使用,filter(data.frame, age > 80)但是我不知道如何同时在两个条件下使用它?

Ben*_*n G 23

我不确定这个问题是你想要 10 到 80 之间的值还是 10 和 80 以上的值。如果你想要介于filter. 如果你想要那些低于 10 和高于 80 你可以|用作“或”运算符:

library(tidyverse)

data %>%
  filter(age > 10,
         age < 80)

data %>%
  filter(age < 10 | age > 80)
Run Code Online (Sandbox Code Playgroud)

  • 您的使用不符合 OP 的需要。逗号充当 AND 而不是 OR。它需要 &lt; 10 和 &gt; 80 (5认同)

小智 6

        dat <- read.table(text = "ID country age
                         1   X   83
                         2   X   15
                          3   Y   2
                          4   Y   12
                           5   X   2
                           6   Y   2
                           7   Y   18
                           8   X   85",
                           header = TRUE)

 x<-filter(dat, dat$age>80&dat$age<10) 
 x
Run Code Online (Sandbox Code Playgroud)

现在,您可以根据您实际想要执行的操作使用 OR (|) 条件,也可以使用 AND (&) 条件。


Rav*_*h13 5

以下内容也可以帮助您 dplyr

library(dplyr)
##Creating variable dat here which has values in it.
dat <- read.table(text = "ID country age
1   X   83
2   X   15
3   Y   2
4   Y   12
5   X   2
6   Y   2
7   Y   18
8   X   85",
                  header = TRUE)

dat %>%
  filter(age<10 | age>80)
Run Code Online (Sandbox Code Playgroud)