是否有更快的方法将日期列转换为LARGE数据集的字符列? (3亿人)

时间:2014-08-15 11:11:22

标签: r data.table

我目前在data.table表中有一个日期列,它使用data.table包。我将日期列(格式为“日期”格式)转换为字符的方式将使用以下函数:

 data[,a:= as.character(a)]

在这里,我们假设a是数据表“data”中的一列日期,其中a列中有3亿个。

然而,这需要超过50 GB的RAM,计算能力并不便宜。有更好的解决方法或技术吗?

1 个答案:

答案 0 :(得分:3)

测试一下:

dates <- seq(as.Date("2014-01-01"), as.Date("2014-02-01"), by="1 day")

system.time({
DT1 <- data.table(a=rep(dates, 1e4), b=rnorm(32e4))
DT1[, a := as.character(a)]
})
#   user  system elapsed 
#   3.03    0.00    3.02 

system.time({
DT2 <- data.table(a=rep(dates, 1e4), b=rnorm(32e4))
DT2[, a := as.character(as.numeric(a))]
DT2[, a := rep(as.character(as.Date(as.numeric(a[1]), origin="1970-01-01")), 
     length(a)), by=a]
})
#   user  system elapsed 
#   0.44    0.00    0.44

all.equal(DT1[,a], DT2[,a])
#[1] TRUE