как dplyr::внутреннее соединение нескольких ТПС или данных.кадров в р
В R, как я могу inner_join
Несколько tbls
или data.frame
эффективно?
Например:
devtools::install_github("rstudio/EDAWR")
library(EDAWR)
library(dplyr)
data(songs)
data(artists)
test <- songs
colnames(test) <- c("song2", "name")
inner_join(songs, artists,by="name") %>% inner_join(test,by="name")
Есть сотни test
-подобных data.frames
, к которым я хочу присоединиться.
1 ответ:
Вы можете собрать фреймы данных в список и использовать
Reduce
:L <- list(songs, artists, test) Reduce(inner_join, L) # name plays song song2 # 1 John guitar Across the Universe Across the Universe # 2 John guitar Come Together Across the Universe # 3 John guitar Across the Universe Come Together # 4 John guitar Come Together Come Together # 5 Paul bass Hello, Goodbye Hello, Goodbye
Вы можете использовать
L <- mget(ls())
(с дополнительнымpattern
arg кls
), чтобы получить все в список.
Как упоминалось в комментариях @akrun, альтернативой
plyr
является:library(plyr) join_all(L, type='inner')