我有2个data.tables:
我想合并它,拥有一个包含187105085行的data.table。
当我输入
> setkey(train.o,id)
> setkey(train.t,id)
> trainbig=merge(train.t,train.o)
我得到了
vecseq中的错误(f __,len __,if(allow.cartesian)否则为NULL as.integer(max(nrow(x),: Join结果超过2 ^ 31行 (内部vecseq达到物理极限)。很可能是错误的 加入。检查i中的重复键值,每个键值都加入到 x中的同一组一遍又一遍。如果还可以,请尝试包含
j
并删除by
(by-without-by),以便j为每个组运行 避免大量分配。否则,请搜索此错误 FAQ,Wiki,Stack Overflow和datatable-help中的消息 建议。
我错了什么?
编辑:
> head(train.o)
offer id chain market repeattrips repeater offerdate category quantity company
1: 1197502 86252 205 34 16 t 2013-03-27 3203 1 106414464
2: 1208251 86246 205 34 5 t 2013-04-24 2202 1 104460040
3: 1197502 12682470 18 11 0 f 2013-03-28 3203 1 106414464
4: 1197502 12996040 15 9 0 f 2013-03-25 3203 1 106414464
5: 1204821 13089312 15 9 0 f 2013-04-01 5619 1 107717272
6: 1197502 13179265 14 8 0 f 2013-03-29 3203 1 106414464
offervalue brand
1: 0.75 13474
2: 2.00 3718
3: 0.75 13474
4: 0.75 13474
5: 1.50 102504
6: 0.75 13474
> head(train.t)
id chain dept category company brand date productsize productmeasure
1 86246 205 7 707 1078778070 12564 2012-03-02 12 OZ
2 86246 205 63 6319 107654575 17876 2012-03-02 64 OZ
3 86246 205 97 9753 1022027929 0 2012-03-02 1 CT
4 86246 205 25 2509 107996777 31373 2012-03-02 16 OZ
5 86246 205 55 5555 107684070 32094 2012-03-02 16 OZ
6 86246 205 97 9753 1021015020 0 2012-03-02 1 CT
purchasequantity purchaseamount
1 1 7.59
2 1 1.59
3 1 5.99
4 1 1.99
5 2 10.38
6 1 7.80
答案 0 :(得分:-1)
你有没有尝试过(但有效):
trainbig=merge(train.t,train.o, by=.EACHI, all=T)
然后手动删除您不感兴趣的变量?