R语言 如何通过列中的值过滤R数据框架

R语言 如何通过列中的值过滤R数据框架

在R编程语言中,数据框架列可以受到约束,并产生较小的子集。然而,当条件被应用时,以下属性被保持。

  • 行被认为是输入的一个子集。
  • 子集中的行以与原始数据框架相同的顺序出现。
  • 列保持不被修改。
  • 根据条件,组的数量可以减少。
  • 在数据过滤过程中,数据框架属性被保留。

方法1:使用数据框架索引

R编程语言中的任何数据框架列都可以通过其名称df$col-name或使用其在数据框架中的索引位置df[col-index]来引用。然后,这一列的单元格值可以受到约束、逻辑或比较条件的影响,然后可以得到一个数据框架子集。这些条件被应用于数据框架的行索引,这样就可以返回满足的行。

  • 基于对缺失值或NA的检查的选择

数据框架中的单元格可以包含缺失值或NA作为其元素,它们可以使用R语言中的is.na()方法进行验证。

例子

# declaring a dataframe
data_frame = data.frame(col1 = c(NA,"b",NA,"e","e") , 
                        col2 = c(0,2,1,4,5), 
                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking which values are not NA
data_frame_mod <- data_frame[!is.na(data_frame$col1),]
  
print ("Modified dataframe")
print (data_frame_mod)

输出

[1] “Original dataframe”

col1 col2  col3

1 <NA>    0  TRUE

2    b    2 FALSE

3 <NA>    1 FALSE

4    e    4  TRUE

5    e    5  TRUE

[1] “Modified dataframe”

col1 col2  col3

2    b    2 FALSE

4    e    4  TRUE

5    e    5  TRUE
  • 基于一个列的单一比较条件的选择

列的值可以受到约束,以过滤和细分数据。这些值可以被映射到特定的出现或在一个范围内。

例子

# declaring a dataframe
data_frame = data.frame(col1 = c("b","b","e","e","e") , 
                        col2 = c(0,2,1,4,5), 
                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking which columns have col3
# value equivalent to true
data_frame_mod <- data_frame[data_frame$col3==TRUE,]
  
print ("Modified dataframe")
print (data_frame_mod)

输出

[1] “Original dataframe”

col1 col2  col3

1    b    0  TRUE

2    b    2 FALSE

3    e    1 FALSE

4    e    4  TRUE

5    e    5  TRUE

[1] “Modified dataframe”

col1 col2 col3

1    b    0 TRUE

4    e    4 TRUE

5    e    5 TRUE
  • 基于一个列的多个比较条件的选择

列值可以受到约束,以过滤和子集数据。这些条件可以通过逻辑上的&或|运算符来组合。这里使用了%in%运算符,以便检查与指定向量中任何一个值相匹配的值。

例子

# declaring a dataframe
data_frame = data.frame(col1 = c("b","b","d","e","e") , 
                        col2 = c(0,2,1,4,5), 
                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking which values of col1 
# are equivalent to b or e
data_frame_mod <- data_frame[data_frame$col1 %in% c("b","e"),]
print ("Modified dataframe")
print (data_frame_mod)

输出

[1] “Original dataframe”

col1 col2  col3

1    b    0  TRUE

2    b    2 FALSE

3    d    1 FALSE

4    e    4  TRUE

5    e    5  TRUE

[1] “Modified dataframe”

col1 col2  col3

1    b    0  TRUE

2    b    2 FALSE

4    e    4  TRUE

5    e    5  TRUE

方法2:使用dplyr库

dplyr库可以被安装并加载到工作空间,用来进行数据操作。

filter()函数被用来产生数据框架的子集,保留所有满足指定条件的行。R中的filter()方法可以应用于分组和未分组的数据。表达式包括比较运算符(==, >, >= ),逻辑运算符(&, |, !, xor()),范围运算符(between(), near()),以及针对列值的NA值检查。子集数据框架必须保留在一个单独的变量中。

语法。

filter(df , cond)

参数:

df – 数据框架对象

cond – 用于过滤数据的条件

例子

library ("dplyr")
  
# declaring a dataframe
data_frame = data.frame(col1 = c("b","b","d","e","e") , 
                        col2 = c(0,2,1,4,5), 
                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking which values of col1 
# are equivalent to b or e
data_frame_mod <- filter(data_frame,col2>1)
  
print ("Modified dataframe")
print (data_frame_mod)

输出

[1] “Original dataframe”

col1 col2  col3

1    b    0  TRUE

2    b    2 FALSE

3    d    1 FALSE

4    e    4  TRUE

5    e    5  TRUE

[1] “Modified dataframe”

col1 col2  col3

1    b    2 FALSE

2    e    4  TRUE

3    e    5  TRUE

另外,可以使用%in%操作符检查数值,使列单元格的数值与输入指定矢量中包含的元素相匹配。

例子

library ("dplyr")
  
# declaring a dataframe
data_frame = data.frame(col1 = c("b","b","d","e","e") , 
                        col2 = c(0,2,1,4,5), 
                        col3= c(TRUE,FALSE,FALSE,TRUE, TRUE))
  
print ("Original dataframe")
print (data_frame)
  
# checking which values of col1 
# are equivalent to b or e
data_frame_mod <- filter(data_frame,col1 %in% c("b","e"))
print ("Modified dataframe")
print (data_frame_mod)

输出

[1] “Original dataframe”

col1 col2  col3

1    b    0  TRUE

2    b    2 FALSE

3    d    1 FALSE

4    e    4  TRUE

5    e    5  TRUE

[1] “Modified dataframe”

col1 col2  col3

1    b    0  TRUE

2    b    2 FALSE

4    e    4  TRUE

5    e    5  TRUE

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程