2014-02-28 67 views
-5

不等的行結合dataframes說我有兩個dataframes,與R中

數據幀甲

id x y 
a 1 2 
b 2 3 
b 2 4 
c 4 3 
a 3 7 
c 3 4 
a 1 0 

數據幀乙

id x q 
a 1 3.5 
a 3 5.7 
b 2 4 
c 3 2.5 
c 4 5.5 

數據幀B具有唯一的一對ID和X列。

我想根據列id和x將B與A結合起來,這樣如果在A中有多個具有相同ID的條目x,則它們會得到與該ID相對應的q的相同條目x。

結果想:

id x y q 
a 1 2 3.5 
b 2 3 4 
b 2 4 4 
c 4 3 5.5 
a 3 7 5.7 
c 3 4 2.5 
a 1 0 3.5 

我已經使用合併嘗試,但它並沒有重複的Q值,只是把NA那裏。謝謝。

+4

'merge(A,B)'做到了。我沒有看到「NA」。 – flodel

+0

也許你真正的'A'和'B'有更多的列名共同比你給我們這個例子? – flodel

+0

你的'x'列是數字還是整數?整數會更好。檢查兩個數字是否相等總是受到舍入點錯誤的影響,所以這可能是爲什麼你沒有獲得儘可能多的匹配。 – flodel

回答

1

試試這個:

merge(A, B, by = c('id', 'x') 

更多信息:Quick-R

2

我想這是你所期待的。你可以合併多個列

A <- data.frame(id=c("a","b","b","c","a","c","a"), x=c(1,2,2,4,3,3,1), y=c(2,3,4,3,7,4,0)) 

B <- data.frame(id=c("a","a","b","c","c"),x=c(1,3,2,3,4), q=c(3.5,5.7,4,2.5,5.5)) 

C <- merge(A,B, by=c(1,2)) 

    id x y q 
1 a 1 2 3.5 
2 a 1 0 3.5 
3 a 3 7 5.7 
4 b 2 3 4.0 
5 b 2 4 4.0 
6 c 3 4 2.5 
7 c 4 3 5.5