私はleft_join
複数のデータフレームにしたい: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
これは、彼らがすべて同じb
列を持っているので、動作しますが、私はleft_join
に渡すことができる追加の引数を指定しReduce
ことはできません。このようなことのための回避策はありますか?
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"))
)
更新
作品のこの種:Reduce(function(...) left_join(..., by = c("b" = "d")), dfs)
しかしby
が複数の要素であるときには、このエラーを与える:Error: cannot join on columns 'b' x 'd': index out of bounds
あなたは ''(関数(...)left_joinここで(...、他の引数)、DFS)を削減することができません? –
私はそれを考えていませんでした。はい、できます!あなたの答えとして書いてもよろしいですか? – nachocab
実際には、 'by'に複数の要素がある場合、これは中断します。 update – nachocab