📜  根据因素从 R DataFrame 中提取行

📅  最后修改于: 2022-05-13 01:54:47.019000             🧑  作者: Mango

根据因素从 R DataFrame 中提取行

在本文中,我们将讨论如何根据 R 编程语言中的因素从数据框中提取行。

方法 1:使用索引方法

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

句法:

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



例子:

R
# 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
# 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
# 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)


输出

[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" 

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

句法:

例子:

电阻



# 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)

输出

[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" 

方法二:使用subset()方法

R 中的subset() 方法用于返回满足上述约束的行。使用此方法可以返回单个和多个因子水平。原始数据框中的行号按顺序保留。可以针对提到的条件验证因子列值。输出必须存储在变量中以保留更改。

句法:

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

例子:

电阻

# 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)

输出

[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"