将数据帧与R中的不等行组合

时间:2014-02-28 23:00:36

标签: r

假设我有两个数据帧,

DataFrame A

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

DataFrame B

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

Dataframe B有一对唯一的id和x列。

我想基于列id和x将B与A组合在一起,这样如果有多个相同id的条目,即A中的x,它们将获得与该id,x相对应的q的相同条目。

想要的结果:

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放在那里。感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

试试这个:

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

更多信息:Quick-R