R语言 基于因素从R数据框架中提取行

R语言 基于因素从R数据框架中提取行

在这篇文章中,我们将讨论如何在R编程语言中基于因素从数据框中提取行。

方法1:使用索引方法

数据框架的列可以使用其名称(df$col-name)或通过其索引(df[[col-indx]])来访问一个特定的列。数据框架列可以通过使用factor()方法进行显式转换,包含作为因子的值。然后可以使用索引方法访问特定的行。

语法

df[ df$col-name == val , ]

满足这个特定列条件值的行将被作为输出返回。

例子

# declaring a data frame
data_frame = data.frame(col1 = factor(c("A","z","z","c","e")), 
                        col2 = factor(c(4:8)))
  
print ("Original dataframe")
print (data_frame)
  
sapply(data_frame , class)
  
# where column sum is greater than 10
data_frame_mod <- data_frame[data_frame$col1=="z",]
  
print ("Modified dataframe")
print (data_frame_mod)
  
sapply(data_frame_mod , class)
R

输出

[1] "Original dataframe"
 col1 col2
1    A    4
2    z    5
3    z    6
4    c    7
5    e    8
   col1     col2
"factor" "factor"
[1] "Modified dataframe"
 col1 col2
2    z    5
3    z    6
   col1     col2
"factor" "factor" 
R

也可以使用索引方法访问多个因子级别的行。因子列的值也可以用%in%操作符与包含值的向量进行验证,该操作符用于检查输入向量中遇到的值是否存在。如果该值包含在向量中,它将返回一个布尔值TRUE。

语法

val %in% vec

例子

# declaring a data frame
data_frame = data.frame(col1 = factor(letters[1:5]), 
                        col2 = factor(c(4:8)))
  
print ("Original dataframe")
print (data_frame)
  
sapply(data_frame , class)
  
# where column sum is greater than 10
data_frame_mod <- data_frame[data_frame$col2 %in% c(4 , 6),]
  
print ("Modified dataframe")
print (data_frame_mod)
sapply(data_frame_mod , class)
R

输出

[1] "Original dataframe"
col1 col2
1    a    4
2    b    5
3    c    6
4    d    7
5    e    8
  col1     col2
"factor" "factor"
[1] "Modified dataframe"
col1 col2
1    a    4
3    c    6
  col1     col2
"factor" "factor" 
R

方法2:使用subset()方法

R中的subset()方法用于返回满足所述约束条件的行。使用这个方法可以返回单个和多个因子水平。原始数据框中的行号将按顺序保留。因素列的值可以根据提到的条件进行验证。输出结果必须存储在一个变量中,以便保留变化。

语法

subset ( df , condition )

条件可以包含逻辑运算符== , != , > , <运算符来比较列中包含的因子水平。

例子

# declaring a data frame
data_frame = data.frame(col1 = factor(letters[1:5]), 
                        col2 = factor(c(4:8)))
  
print ("Original dataframe")
print (data_frame)
  
sapply(data_frame , class)
  
# where column sum is greater than 10
data_frame_mod <- subset(data_frame, col2 %in% c(4 , 6))
print ("Modified dataframe")
print (data_frame_mod)
sapply(data_frame_mod , class)
R

输出

[1] "Original dataframe"
 col1 col2
1    a    4
2    b    5
3    c    6
4    d    7
5    e    8
   col1     col2
"factor" "factor"
[1] "Modified dataframe"
 col1 col2
1    a    4
3    c    6
   col1     col2
"factor" "factor" 
R

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册