2015-02-17 38 views
1

我有一个DT(data.table),其中包括3900万行和两列,例如colacolb ,我想添加一个名为colc的新列,它是DT[,:= (colc = paste(cola, colb, sep="-")),但速度有点慢。R:加速合并(粘贴或粘贴0)操作为3900万行和两列data.table

您是否有其他方法来加速此操作?

谢谢。

+1

多慢有点慢? (什么速度,在什么硬件上?)如果你已经非常满意,我不会感到惊讶。你能平行吗? – 2015-02-17 20:21:07

+0

使用'DT [,':='(colc = paste0(cola,colb))',它在Linux平台上花费了大约393秒。我不认为它会并行。另外,如果我'加'操作DT [,':='(colc = cola + colb)',它很快(因为可乐和colb是数字的),但是一些colc值会等同于do加操作,所以我考虑使用粘贴功能将它们放在一起,确保它们中的每一个都不同。 – BioChemoinformatics 2015-02-17 20:32:14

+3

如果combos'(可乐,colb)'重复了很多,'by'语句应该加快速度。要检查你有多少重复,你可以看看'DT [,。N,by ='cola,colb'] [,hist(N)]'(或者不是'hist'的任何摘要命令)。 – Frank 2015-02-17 20:43:21

回答

3

由于@Frank建议,使用by = 'cola,colb',我的原始问题可以通过这种方式解决,不需要添加额外的列。谢谢。

+0

我想你可能会发现新的[HTML vignettes](https://github.com/Rdatatable/data.table/wiki/Getting-started)非常有用。 – Arun 2015-02-18 19:34:34

+0

谢谢@阿伦。当然。将学习它。 – BioChemoinformatics 2015-02-18 19:48:39