Skip to main content
 首页 » 编程设计

几种方法过滤R语言数据框

2022年07月19日141sharpest

数据过滤是清洗过程的基本操作之一。R有很多方式可以实现,本文介绍几种常用方法,包括基本的数据框访问方式以及 dplyr包的强大功能。

1. 示例数据

data <- data.frame(var=c(2,4,6,8,10,12,14,16)) 

我们定义了示例数据,假设我们需要返回大于10的数据。

2. 过滤数据

2.1 通过行、列方式

> data[data[,"var"]>10,] 
[1] 12 14 16 

因为数据框有行和列组成,data[,"var"] 表示所有行,列为var ;data[,"var"]>10 整体表示符合变量 var大于 10 的行,后面空格所有列。我们只有一列,也可以写成 : data[data[,"var"]>10,"var"]

2.2 通过变量方式

> data[data$var>10,] 
[1] 12 14 16 

data$var>10 直接变量访问数据库列数据,整体表示这列数据大于的所有行,后面的逗号表示所有列。

2.3 通过subset方式

> subset(data,var>10) 
  var 
6  12 
7  14 
8  16 

2.4 使用 dplyr

> library(dplyr) 
 
载入程辑包:‘dplyr’ 
 
> filter(data,var>10) 
  var 
1  12 
2  14 
3  16 

保存结果:

library(dplyr) 
df <- filter(mtcars, mpg > 25) 

3. dplyr 过滤语法及示例

3.1 dplyr 条件运算符

filter函数主要包括两个参数,第一个为要操作的数据框,第二个为条件,返回true 和 false。

关系运算主要包括:

  • == (Equal to)
  • != (Not equal to)
  • < (Less than)
  • <= (Less than or equal to)
  • > (Greater than)
  • >= (Greater than or equal to)

逻辑运算:

  • ! (logical NOT)
  • & (logical AND)
  • | (logical OR)

另外还有两个常用操作:

  • %in% (检查值是否再多值的数组中)
  • is.na() (检查值是否为 NA)

3.2 示例代码

install.packages('ggplot2') 
library('ggplot2') 
diamonds 
# 数值类型过滤 
filter(diamonds, price > 2000) 
# 字符串类型过滤 
filter(diamonds, cut != 'Ideal') 
# 多个数值类型条件 
filter(diamonds, price >= 1000 & price <= 1500)、 
# 过滤类型变量 
filter(diamonds, cut %in% c('Ideal', 'Premium')) 
# 也可以先定义向量变量 
cuts_to_include <- c('Good', 'Very Good', 'Ideal', 'Premium') 
filter(diamonds, cut %in% cuts_to_include) 

多条件组合示例:

# 链接多个条件 
filter(diamonds, cut == 'Ideal' & carat > 1) 
filter(diamonds, cut == 'Ideal' & carat > 1 & color == 'E') 
filter(diamonds, cut == 'Ideal' | carat > 1) 

4. 总结

本文介绍了4中方式过滤数据框数据,其中 dplyrfliter功能非常强大。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/117201115
阅读延展