Dplyr:如何使用 anti_join 查找不匹配的记录
您可以使用 R 中dplyr包中的anti_join()函数返回一个数据框中与另一个数据框中没有匹配值的所有行。
该函数使用以下基本语法:
anti_join(df1, df2, by= ' col_name ')
以下示例展示了如何在实践中使用此语法。
示例 1:对列使用 anti_join()
假设我们在 R 中有以下两个数据框:
#create data frames df1 <- data. frame (team=c('A', 'B', 'C', 'D', 'E'), dots=c(12, 14, 19, 24, 36)) df2 <- data. frame (team=c('A', 'B', 'C', 'F', 'G'), dots=c(12, 14, 19, 33, 17))
我们可以使用anti_join()函数返回第一个数据帧中在第二个数据帧中没有匹配团队的所有行:
library (dplyr) #perform anti join using 'team' column anti_join(df1, df2, by=' team ') team points 1 D 24 2 E 36
我们可以看到,第一个数据框中恰好有两支球队在第二个数据框中没有匹配的球队名称。
示例 2:对多列使用 anti_join()
假设我们在 R 中有以下两个数据框:
#create data frames df1 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'), position=c('G', 'G', 'F', 'G', 'F', 'C'), dots=c(12, 14, 19, 24, 36, 41)) df2 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'), position=c('G', 'G', 'C', 'G', 'F', 'F'), dots=c(12, 14, 19, 33, 17, 22))
我们可以使用anti_join()函数返回第一个数据框中在第二个数据框中没有匹配团队和位置的所有行:
library (dplyr) #perform anti join using 'team' and 'position' columns anti_join(df1, df2, by=c(' team ', ' position ')) team position points 1 FY 19 2 BC 41
我们可以看到,第一个数据框中恰好有两条记录在第二个数据框中没有匹配的球队名称和位置。
其他资源
以下教程解释了如何在 dplyr 中执行其他常用功能: