在不使用“合并”功能的情况下添加从不同表派生的新列

时间:2013-02-09 23:52:55

标签: r

假设这两个表--A和B

表A是

id v1  
1  10
3  20
5  20
6  15

表B是

id v2  
1  200
2  300
3  200
4  250
5  190
6  290

我想将B的“v2”添加到A,并使用相同的“id”,如下所示:

表A应该是

id v1 v2
1  10 200
3  20 200
5  20 190
6  15 290

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

使用基于X [Y]语法的data.table

require(data.table)
dt1 <- data.table(df1)
dt2 <- data.table(df2)
setkey(dt1, "id")
setkey(dt2, "id")
> dt2[dt1]

#    id  v2 v1
# 1:  1 200 10
# 2:  3 200 20
# 3:  5 190 20
# 4:  6 290 15

答案 1 :(得分:1)

您可以使用sqldf

library(sqldf)
sqldf('SELECT dat.*,dat1.v2
       FROM dat,dat1
       WHERE dat.id = dat1.id')
  id v1  v2
1  1 10 200
2  3 20 200
3  5 20 190
4  6 15 290

但是使用merge我们会得到相同的结果

merge(dat,dat1)
  id v1  v2
1  1 10 200
2  3 20 200
3  5 20 190
4  6 15 290

答案 2 :(得分:0)

您可以通过以下方式使用环境查找:

library(qdap)

A$v2 <- lookup(A$id, B)
A

> A
  id v1  v2
1  1 10 200
2  3 20 200
3  5 20 190
4  6 15 290

这在大型数据集上非常快。