我有一个问题让我很困惑,真的需要你的帮助。简化后的问题是:
d1<-data.table(v1=c("a","b","c","d","d","b","a","c","a","d","b","a"),
v2=(seq(1:12)),V3=rep(1:4,times=3))
d2<-data.table(v1=c("a","b","c","d"),v3=c(3,2,1,4),v4=c("y","x","t","e"))
这将产生两个数据集:
D1:
v1 v2 V3
1: a 1 1
2: b 2 2
3: c 3 3
4: d 4 4
5: d 5 1
6: b 6 2
7: a 7 3
8: c 8 4
9: a 9 1
10: d 10 2
11: b 11 3
12: a 12 4
> d2
v1 v3 v4
1: a 3 y
2: b 2 x
3: c 1 t
4: d 4 e
您可以看到v1和v3中的元素是相同的。现在我想通过在D1中创建一个新列来连接两个数据集,该新列返回d2中与v1和v3匹配的V4的值,希望能得到以下输出:
>
d3
v1 v2 V3 V4
1: a 1 1 na
2: b 2 2 x
3: c 3 3 na
4: d 4 4 e
5: d 5 1 na
6: b 6 2 x
7: a 7 3 y
8: c 8 4 na
9: a 9 1 na
10: d 10 2 na
11: b 11 3 na
12: a 12 4 na
我正在使用的实际数据量相对较大,类似于将113MB的数据与23MB的数据合并。我尝试使用for循环来解决这个问题,但是由于数据太长,完成任务需要很长时间。我还尝试了merge
和sqldf
,但两者都无法完成任务。你能否帮我解决这个问题?非常感谢!