vecseq数据出错,合并(加入多个)data.table r

时间:2014-05-28 15:00:44

标签: r merge data.table

我有2个data.tables:

  • train.o ,包含160057行,列ID是唯一的
  • train.t ,包含187105085行,列ID不唯一,有160057个唯一ID,全部在train.o

我想合并它,拥有一个包含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

1 个答案:

答案 0 :(得分:-1)

你有没有尝试过(但有效):

trainbig=merge(train.t,train.o, by=.EACHI, all=T)

然后手动删除您不感兴趣的变量?