как 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())(с дополнительнымpatternarg кls), чтобы получить все в список.
Как упоминалось в комментариях @akrun, альтернативой
plyrявляется:library(plyr) join_all(L, type='inner')