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 中执行其他常用功能:

如何使用 dplyr 按索引选择列
如何使用 dplyr 连接多个数据框
如何使用 dplyr 过滤包含特定字符串的行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注