【发布时间】:2013-12-27 07:20:15
【问题描述】:
我不确定我可以在这里问这个问题,如果我应该在其他地方问,请告诉我。
我有一个具有这种结构的 1e6 行的 data.table:
V1 V2 V3
1: 03/09/2011 08:05:40 1145.0
2: 03/09/2011 08:06:01 1207.3
3: 03/09/2011 08:06:17 1198.8
4: 03/09/2011 08:06:20 1158.4
5: 03/09/2011 08:06:40 1112.2
6: 03/09/2011 08:06:59 1199.3
我正在使用以下代码将 V1 和 V2 变量转换为唯一的日期时间变量:
system.time(DT[,`:=`(index= as.POSIXct(paste(V1,V2),
format='%d/%m/%Y %H:%M:%S'),
V1=NULL,V2=NULL)])
user system elapsed
47.47 0.16 50.27
有什么方法可以提高这种转换的性能吗?
这里是dput(head(DT)):
DT <- structure(list(V1 = c("03/09/2011", "03/09/2011", "03/09/2011",
"03/09/2011", "03/09/2011", "03/09/2011"), V2 = c("08:05:40",
"08:06:01", "08:06:17", "08:06:20", "08:06:40", "08:06:59"),
V3 = c(1145, 1207.3, 1198.8, 1158.4, 1112.2, 1199.3)), .Names = c("V1",
"V2", "V3"), class = c("data.table", "data.frame"), row.names = c(NA,
-6L), .internal.selfref = <pointer: 0x00000000002a0788>)
【问题讨论】:
-
如果您的日期是格林威治标准时间并且大于 1970 年 1 月 1 日,您可以尝试
fasttime包裹。 -
@aseidlitz 谢谢。我忘记了
fasttime。我认为这是一个很好的候补。但是 data.table 包内部没有使用我? -
有一些关于向 data.table 添加 fasttime 支持的讨论,但据我所知,它仍然是 R Forge 上的一个未决请求
标签: r performance data.table posixct