我有個問題讓我發狂,真的需要你的幫助。 簡化的問題是:如何合併兩個大型數據集,同時在r中生成具有不同重複值的新列
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 V4的值相匹配這兩個指數V1和V3的是,我希望我能得到的輸出看起來像這樣:
>
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
的我使用的實際數據的大小相對非常大。這是像23MB的聯合113MB數據。我試圖使用for循環來解決這個問題,因爲數據太長了,需要很長時間才能完成任務。我也試過merge
和sqldf
,但他們都沒有完成這項工作。你能幫我解決這個問題嗎?非常感謝你!
sqldf花了這麼長時間的原因可能是您沒有在連接列上放置索引。在主頁上有一些例子,並且有很多關於例子的問題。 – 2014-11-03 22:28:15
非常感謝信息 – sxgn 2014-11-04 09:59:41