使用 Dplyr 按 R 中的多个条件过滤数据
在本文中,我们将学习如何使用 dplyr 包在 R 编程语言中通过多种条件过滤数据帧。
filter()函数用于生成数据框的子集,保留满足指定条件的所有行。 R 编程语言中的 filter() 方法可以应用于分组和未分组的数据。表达式包括运算符(==,>,> =),逻辑运算符(&,|!,XOR()),运算符范围(()之间,邻近())以及NA值检查针对列值.子集数据帧必须保留在单独的变量中。
方法一:直接使用filter()
为此,只需将要检查的条件传递给过滤器函数,该函数自动检查数据框并检索满足条件的行。
Syntax: filter(df , condition)
Parameter :
df: The data frame object
condition: filtering based upon this condition
示例:使用 filter()函数过滤行的 R 程序
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)
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)
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))
R
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 TRUE
2 31 44.5 TRUE
方法 2:在 filter() 中使用 %>%
这种方法被认为是一种 使用更清洁的方法 大量条件,因为使用 %>% 引用数据帧,然后通过 filter()函数应用条件。
Syntax: df %>% filter ( condition )
Parameter:
df: The data frame object
condition: filtering based upon this condition
示例:使用 %>% 过滤的 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 与 filter() 一起使用
is.na()函数接受的值,并且如果它是一个NA值,并返回FALSE,如果它不是一个NA值返回TRUE。
Syntax: df %>% filter(!is.na(x))
Parameters:
is.na(): reqd to check whether the value is NA or not
x: column of dataframe object.
示例:使用 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%' o运算符和 filter()
%in%运算符用于仅过滤掉包含向量中提供的数据的列。
Syntax: filter( column %in% c(“data1”, “data2″….”data N” ))
Paramaters:
column: column name of the dataframe
c(“data1”, “data2″….”data N”): A vector containing the names of data to be found and printed.
示例:使用 %in% 过滤数据框的 R 程序
电阻
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