使用Dplyr在R语言中通过多个条件过滤数据
在这篇文章中,我们将学习如何在R编程语言中使用dplyr包按多个条件过滤数据框。
filter() 函数被用来产生一个数据框架的子集,保留所有满足指定条件的行。R编程语言中的filter()方法可以应用于分组和未分组的数据。表达式包括比较运算符(==, >, >=
),逻辑运算符(&, |, !, xor()
),范围运算符(between(), near()
),以及针对列值的NA值检查。子集数据框必须保留在一个单独的变量中。
方法1:直接使用 filter()
对于这一点,只需将要检查的条件传递给filter函数,该函数会自动检查数据框,并检索出满足条件的行。
语法 :filter(df , condition)
参数:
df: 数据框架对象
条件: 根据该条件进行过滤
例子: 使用filter()函数过滤行的R程序
library(dplyr)
# sample data
df=data.frame(x=c(12,31,4,66,78),
y=c(22.1,44.5,6.1,43.1,99),
z=c(TRUE,TRUE,FALSE,TRUE,TRUE))
# condition
filter(df, x<50 & z==TRUE)
输出
x y z
1 12 22.1 TRUE
2 31 44.5 TRUE
方法2:使用%>%和filter()。
当你在处理 大的条件集时,这种方法被认为是一种比较干净的方法,因为数据框架是用%>%来引用的,然后通过filter()函数来应用条件。
语法: df %>% filter ( condition )
参数
df : 数据框架对象
条件 :根据该条件进行过滤
例子: 使用%>%
过滤的R程序
library(dplyr)
df=data.frame(x=c(12,31,4,66,78),
y=c(22.1,44.5,6.1,43.1,99),
z=c(TRUE,TRUE,FALSE,TRUE,TRUE))
df %>%
filter(y < 45, z != FALSE)
输出
x y z
1 12 22.1 TRUE
2 31 44.5 TRUE
3 66 43.1 TRUE
方法3:用过滤器()使用NA
is.na() 函数接受一个值,如果它是一个 NA 值,则返回 TRUE ,如果它不是一个 NA 值,则 返回 FALSE 。
语法: df %>% filter(!is.na(x))
参数:
is.na() : 要求检查该值是否为NA值
x :数据框架对象的列。
示例: 使用NA过滤数据框架的R程序
library(dplyr)
df=data.frame(x=c(12,31,NA,NA,NA),
y=c(22.1,44.5,6.1,10,99),
z=c(TRUE,TRUE,FALSE,TRUE,TRUE))
df %>% filter(!is.na(x))
输出
x y z
1 12 22.1 TRUE
2 31 44.5 TRUE
方法4:使用 ‘%in%’ 运算符和filter()。
%in% 运算符用于只过滤出包含向量中提供的数据的列。
语法: filter( column %in% c("data1", "data2″.... "data N"))
参数
column :数据框架的列名
c("data1", "data2″.... "data N"):
一个包含要找到并打印的数据名称的向量。
例子: R程序使用%in% 来过滤数据框架
library(dplyr)
df=data.frame(x=c(12,31,10,2,99),
y=c(22.1,44.5,6.1,10,99),
z=c("Apple","Guava", "Mango", "Apple","Mango"))
df %>%
filter(z %in% c("Apple", "Mango"))
输出
x y z
1 12 22.1 Apple
2 10 6.1 Mango
3 2 10.0 Apple
4 99 99.0 Mango