如何过滤r中data.table中的integer64类数据

时间:2014-11-19 06:06:48

标签: r data.table kaggle

我有来自kaggle(http://www.kaggle.com/c/acquire-valued-shoppers-challenge/data)的20GB交易数据集。

行超过3亿,变量为11。

使用R处理太重了。所以我想过滤数据。

enter image description here

id class是interger64。

唯一ID为311541,我想要样本20000。

我正在使用data.table但是有一个像图片一样的错误。

有没有办法对id进行抽样?

1 个答案:

答案 0 :(得分:1)

如果我没记错的话,integer64只被double屏蔽为integer。在不进行任何复制的情况下获取子集的最佳方法是使用setattr中的data.table函数。试试这个:

#remove the integer64 class
setattr(transaction$id,"class",NULL)
custom_sample<-sample(unique(transaction$id),20000)
sample_transac<-transaction[id %in% custom_sample,]
#give the integer64 class back
setattr(sample_transac$id,"class","integer64")