R语言 如何从数据框架中删除一个子集

R语言 如何从数据框架中删除一个子集

子集是一个单元格的组合,形成一个较小的数据框架,从原始数据框架中形成。一组行和列可以从原始数据框架中移除,以减少数据框架的一部分。子集的移除可以基于行和列所受到的约束。在这篇文章中,我们将看到如何在R编程语言中从数据框架中移除子集。

方法1:使用anti_join()方法

这个包中的anti_join()方法是用来返回第一个数据框中所有在y中没有匹配值的行,只保留第一个数据框中的列。它基本上是一个选择和过滤工具。原始数据框的行号不会保留在返回的结果中。

语法:anti_join ( x , y , by = c(..))

参数 :

  • x : 第一个数据框
  • y :第二个数据框
  • by(可选)。要考虑哪一列作为过滤数据的关键。

返回: 第一个数据框中不在第二个数据框中的行。

代码

# loading the library
library("dplyr")
  
# declaring data frame
data_frame <- data.frame(col1 = c(2, 4, 6, 10),
                         col2 = c(4, 6, 8, 5),
                         col3 = c(8, 10, 12, 20),
                         col4 = letters[1 : 4])
  
print ("Original Dataframe")
print (data_frame)
  
# creating subset dataframe
subset <- data.frame(col1 = c(2 , 6),
                     col2 = c(4 , 8))
  
# removing subset data frame
data_frame_mod <- anti_join(data_frame,subset)
print ("Modified Dataframe")
print (data_frame_mod)

输出

[1] "Original Dataframe" 
col1 col2 col3 col4 
1    2    4    8    a 
2    4    6   10    b 
3    6    8   12    c 
4   10    5   20    d 
[1] "Modified Dataframe" 
col1 col2 col3 col4 
1    4    6   10    b 
2   10    5   20    d

如果第二个数据框的列属于第一个数据框的不同行,我们可以使用anti_join()方法中的 “by “参数指定要取的列值。

library("dplyr")
  
# declaring data frame
data_frame <- data.frame(col1 = c(2, 4, 6, 10),
                         col2 = c(4, 6, 8, 5),
                         col3 = c(8, 10, 12, 20),
                         col4 = letters[1 : 4])
print ("Original Dataframe")
print (data_frame)
subset <- data.frame(col1 = c(2 , 4),
                     col4 = c("a" , "d") )
data_frame_mod <- anti_join(data_frame,
                            subset, by = "col4")
print ("Modified Dataframe")
print (data_frame_mod)

输出

[1] "Original Dataframe" 
col1 col2 col3 col4 
1    2    4    8    a 
2    4    6   10    b 
3    6    8   12    c 
4   10    5   20    d 
[1] "Modified Dataframe" 
col1 col2 col3 col4 
1    4    6   10    b 
2    6    8   12    c 

方法2:使用%in%运算符

%in%运算符用于检查向量中是否存在一个值。如果该值存在,它将返回一个逻辑值,否则为假。

val %in% vec

第一个数据框的特定列在第二个数据框中被检查出数值,并返回在第二个数据框中不存在的行。在应用这个运算符的过程中,原始数据框的行号被保留。

library("dplyr")
  
# declaring data frame
data_frame <- data.frame(col1 = c(2, 4, 6, 10),
                         col2 = c(4, 6, 8, 5),
                         col3 = c(8, 10, 12, 20),
                         col4 = letters[1 : 4])
  
print ("Original Dataframe")
print (data_frame)
  
# creating second data frame
subset <- data.frame(col1 = c(2 , 4),
                     col2 = c("a" , "d"))
data_frame_mod <- data_frame[data_framecol4 %in% subsetcol2, ]
print ("Modified Dataframe")
print (data_frame_mod)

输出

[1] "Original Dataframe"
  col1 col2 col3 col4
1    2    4    8    a
2    4    6   10    b
3    6    8   12    c
4   10    5   20    d
[1] "Modified Dataframe"
  col1 col2 col3 col4
2   4    6   10    b
3   6    8   12    c 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程