R 按多种条件筛选

R 按多种条件筛选,r,dplyr,R,Dplyr,我有如下的数据框 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 我需要过滤10岁以下的行,同时过滤80岁以上的行。 我怎样才能用最简单的方法来做呢?对于一种情况,我可以使用过滤器(data.frame,age>80),但我不知道如何同时对两种情况进行过滤?从问题中,我不确定您是否想要10到80之间的值,或者10以下到80以上的值。如果需要介

我有如下的数据框

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
我需要过滤10岁以下的行,同时过滤80岁以上的行。
我怎样才能用最简单的方法来做呢?对于一种情况,我可以使用
过滤器(data.frame,age>80)
,但我不知道如何同时对两种情况进行过滤?

从问题中,我不确定您是否想要10到80之间的值,或者10以下到80以上的值。如果需要介于两者之间,可以在
过滤器中放置多个参数。如果您想要10岁以下和80岁以上的人,可以使用
|
作为“或”运算符:

library(tidyverse)

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

data %>%
  filter(age < 10 | age > 80)
库(tidyverse)
数据%>%
过滤器(年龄>10岁,
年龄<80岁)
数据%>%
过滤器(年龄<10岁|年龄>80岁)

以下内容也可以帮助您使用
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)
库(dplyr)
##在这里创建变量dat,其中包含值。
dat%
过滤器(80岁)

dat将
|
用于或。像
df1%>%filter(年龄<10 |年龄>80)
另一个选项是
filter(dat,!between(年龄,10,80))
您的使用不符合OP的需要。逗号充当AND,而不是OR。它需要<10且>80@anba也许我不明白这个问题。目标是拥有一个10@Ben我想过滤掉80岁的数据。换句话说,我只需要从示例data.frame中获取行1,3,5,5,8的数据。
        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