2016-05-28 7 views
-1

私は2つのデータフレームを持っています。2つのデータフレームを同じにする必要がある場合、どのように2つのデータフレームをマージできますか?

Name Month Number  
1.H 1  8 
2.H 2  7 
3.H 3  6 
4.A 1  9 
5.A 2  10 
6.A 3  11 

そしてdf2次のようになります:

Name Month index  
1.H 1  3 
2.H 2  2 
3.H 3  1 
4.A 1  3 
5.A 2  5 
6.A 3  9 

そして、私は、次のdfにそれをマージしたい:

私は2つをマージすることができますどのように
Name Month Number index 
    1.H 1 8  3 
    2.H 2 7  2 
    3.H 3 6  1 
    4.A 1 9  3 
    5.A 2 10  5 
    6.A 3 11  9 

例えばdf1は次のようになりますdfはこれにdf

は、私はすでにmerge機能by.xby.yを試してみましたが、それは1つの列のみでマージすることができますが、私はまた、第二のカラムが欲しいです。

+1

をby.x'ことを言った ' –

+0

を'と' by.y'は1つの列だけをマージできますか?それはどこに書かれていますか?ドキュメンテーションはそうは言いません。あなたはいくつかの列でそれをやってみましたか? –

答えて

1

は、一度に複数の列にマージすることができます実際には

merge(df1, df2, by = c('Name', 'Month')) 

byのデフォルト値はintersect(names(df1), names(df2))あるとして、それは、デフォルトでなければなりません。

0

これにはさまざまな方法があります。他の2つの答えはそれを行う基本的な方法を提供します。パッケージには2つの方法があります。

ます。また sqldfパッケージを使用することができます

sqldf("select a.*, b.index from df1 as a join df2 as b on a.name = b.name and a.month = b.month") 

あなたはdplyrパッケージを使用することができます:(DF2、DF1)マージ `てみ

inner_join(df1, df2, by = c("name", "month")) 
関連する問題