2017-05-10 1 views
0

データフレームがあります。最初の2つの列が同じ場合はマージし、 。 は、例えば以下のように、私は3つのデータフレームを持っている:今R:3つのデータフレームの列AとBと同じ行を結合し、対応するC列を追加する方法

> dump1 
a b c 
q 12 2 
w 23 3 
e 34 4 
> dump2 
a b c 
q 12 1 
w 23 1 
s 3 1 
> dump3 
a b c 
q 2 6 
w 23 7 
s 3 8 
d 2 9 

、私がマージされたデータフレームを取得したい:

> dump5 
a b c 
d 2 9 
q 2 6 
s 3 9 
q 12 3 
w 23 11 
e 34 4 

をデータが非常に大きいので、私はquikly方法を持っていると思います。 どうすればいいですか?誰も知っている? お気軽にお問い合わせください。 ありがとうございます。

答えて

1

私たちは、それがオブジェクトを持つ多くのデータセットがある場合は 'C'

library(data.table) 
rbindlist(list(dump1, dump2, dump3))[, .(c = sum(c)), .(a, b)] 

sumを取得し、 'a' と 'b' でグループ化されたdata.tableからrbindlist、とrbindlistでデータセットを配置名前ではなく、個々のオブジェクト名を指定するので、私たちはオブジェクト名を取得するためにpatternlsを使用することができ、地球環境に作成された数字が続くdumpで始まり、その後、

mgetと値0
rbindlist(mget(ls(pattern = "dump\\d+")))[, .(c= sum(c)), .(a, b)] 
関連する問題