Ich möchte left_join
mehrere Datenrahmen:Wie man mehrere Datenrahmen mit dplyr verbinden?
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
Dies funktioniert, weil sie alle die gleiche b
Spalte, aber Reduce
nicht lassen Sie mich zusätzliche Argumente angeben, die ich left_join
passieren kann. Gibt es eine Arbeit für so etwas?
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"))
)
aktualisieren
Diese Art der Arbeiten: Reduce(function(...) left_join(..., by = c("b" = "d")), dfs)
aber wenn by
mehr als ein Element ist gibt es diesen Fehler: Error: cannot join on columns 'b' x 'd': index out of bounds
Kann nicht Sie 'Reduce (function (...) left_join (..., andere args hier), dfs)' ? –
Daran hatte ich nicht gedacht. Ja, ich kann! Fühlen Sie sich frei, es als Ihre Antwort zu schreiben – nachocab
Hmm, eigentlich, das bricht, wenn 'by' mehr als ein Element hat. Siehe Update – nachocab