我想进行2 df的全连接。令我惊讶的是,如果dplyr的默认行为是同时存在于两个df中,则它们会加入NA。是否有功能可防止dplyr执行此操作?
这是内部联接的示例:
x <- data.frame(a = c(5, NA, 9), b = 1:3)
y <- data.frame(a = c(5, NA, 9), c = 4:6)
z <- dplyr::inner_join(x, y, by = 'a')
我希望z仅包含2条记录,而不包含3条记录。理想情况下,我希望这样做而不必事先手动过滤掉NA的记录,然后将它们附加到结果中(因为这看起来很笨拙)。
最佳答案
您可以使用na_matches = "never"
。这是在v.0.7.0的NEWS中,但是我没有在文档中看到它。默认值为na_matches = "na"
。
这将返回两行而不是三行:
dplyr::inner_join(x, y, by = 'a', na_matches = "never")
a b c
1 5 1 4
2 9 3 6
关于r - 阻止dplyr加入NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161553/