0

假设这两个表 - 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”添加到具有相同“id”的A,如下所示:

表A应该是

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

我感谢您的帮助!

4

3 回答 3

2

使用data.tablewhich 基于 X[Y] 语法:

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
于 2013-02-10T00:15:49.903 回答
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
于 2013-02-10T01:26:30.527 回答
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

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

于 2013-02-10T01:40:06.770 回答