如何在 R 中使用 dplyr 执行多个左连接
How to perform multiple left joins using dplyr in R
如何使用 dplyr
在 R 中连接多个数据帧?
new <- left_join(x,y, by = "Flag")
这是我用来左连接 x 和 y 的代码
该代码不适用于多个连接
new <- left_join(x,y,z by = "Flag")
您可以使用嵌套 left_join
library(dplyr)
left_join(x, y, by='Flag') %>%
left_join(., z, by='Flag')
或者另一种选择是将所有数据集放在 list
中,并使用 base R
中的 merge
和 Reduce
Reduce(function(...) merge(..., by='Flag', all.x=TRUE), list(x,y,z))
或者我们有 plyr
中的 join_all
。在这里,我们将数据帧放在 list
中,并使用参数 type='left'
进行左连接。
library(plyr)
join_all(list(x,y,z), by='Flag', type='left')
正如@JBGruber 在评论中提到的,也可以通过 purrr
完成
library(purrr)
library(dplyr)
purrr::reduce(list(x,y,z), dplyr::left_join, by = 'Flag')
如何使用 dplyr
在 R 中连接多个数据帧?
new <- left_join(x,y, by = "Flag")
这是我用来左连接 x 和 y 的代码 该代码不适用于多个连接
new <- left_join(x,y,z by = "Flag")
您可以使用嵌套 left_join
library(dplyr)
left_join(x, y, by='Flag') %>%
left_join(., z, by='Flag')
或者另一种选择是将所有数据集放在 list
中,并使用 base R
中的 merge
和 Reduce
Reduce(function(...) merge(..., by='Flag', all.x=TRUE), list(x,y,z))
或者我们有 plyr
中的 join_all
。在这里,我们将数据帧放在 list
中,并使用参数 type='left'
进行左连接。
library(plyr)
join_all(list(x,y,z), by='Flag', type='left')
正如@JBGruber 在评论中提到的,也可以通过 purrr
library(purrr)
library(dplyr)
purrr::reduce(list(x,y,z), dplyr::left_join, by = 'Flag')