Voglio left_join
più frame di dati:Come unire più frame di dati usando dplyr?
dfs <- list(
df1 = data.frame(a = 1:3, b = c("a", "b", "c")),
df2 = data.frame(c = 4:6, b = c("a", "c", "d")),
df3 = data.frame(d = 7:9, b = c("b", "c", "e"))
)
Reduce(left_join, dfs)
# a b c d
# 1 1 a 4 NA
# 2 2 b NA 7
# 3 3 c 5 8
Questo funziona perché tutti hanno la stessa b
colonna, ma Reduce
non mi permette di specificare gli argomenti aggiuntivi che posso passare a left_join
. C'è un lavoro in giro per qualcosa di simile?
dfs <- list(
df1 = data.frame(a = 1:3, b = c("a", "b", "c")),
df2 = data.frame(c = 4:6, d = c("a", "c", "d")),
df3 = data.frame(d = 7:9, b = c("b", "c", "e"))
)
Aggiornamento
Questo tipo di opere: Reduce(function(...) left_join(..., by = c("b" = "d")), dfs)
ma quando by
è più di un elemento che dà questo errore: Error: cannot join on columns 'b' x 'd': index out of bounds
Non puoi fare 'Ridurre (function (...) left_join (..., altri args qui), DFS)' ? –
Non ci avevo pensato. Sì posso! Sentiti libero di scriverlo come risposta – nachocab
Hmm, in realtà, questo si interrompe se 'by' ha più di un elemento. Vedi aggiornamento – nachocab