我目前在data.table表中有一个日期列,它使用data.table包。我将日期列(格式为“日期”格式)转换为字符的方式将使用以下函数:
data[,a:= as.character(a)]
在这里,我们假设a是数据表“data”中的一列日期,其中a列中有3亿个。
然而,这需要超过50 GB的RAM,计算能力并不便宜。有更好的解决方法或技术吗?
答案 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