首页 > 解决方案 > R 中 dplyr 连接的重复警告

问题描述

我使用dplyr::left_join()了很多,有时我没有注意到第二个表中的重复记录导致多个匹配项(以及一个主表的行数比我开始时更多)。

我很想知道 R 是否有办法在发生这种情况时发出警告消息。还是我只是懒惰?我是否应该更加小心以确保我不使用具有重复记录的表?

标签: rdplyr

解决方案


一种方法是使用您自己的版本left_join,在其中比较行数:

my_left_join <- function(x, y, ...){
  res <- dplyr::left_join(x, y, ...)

  if (nrow(res) > nrow(x)) warning("Duplicated records found")
  return(res)  
}

这种方式my_left_join会引发警告:

a <- tibble(id = 1:3)
b <- tibble(id = c(1:3, 1), val = 7:10)


a %>% dplyr::left_join(b, by = "id")
a %>% my_left_join(b, by = "id")

推荐阅读