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