R 加速将200万行日期字符串转换为POSIX.ct

R 加速将200万行日期字符串转换为POSIX.ct,r,posix,time-series,xts,posixct,R,Posix,Time Series,Xts,Posixct,我有一个csv,其中包括大约200万行的日期字符串,格式如下: 2012/11/13 21:10:00 让我们称之为csv$Date.and.Time 我想尽快将这些日期(及其附带数据)转换为xts 我已经编写了一个脚本,它可以很好地执行转换(见下文),但是速度非常慢,我希望尽可能加快转换速度 这是我目前的方法。有人对如何加快这一进程有什么建议吗 dt <- as.POSIXct(csv$Date.and.Time,tz="UTC") idx <- format(dt,tz=

我有一个csv,其中包括大约200万行的日期字符串,格式如下:

2012/11/13 21:10:00 
让我们称之为
csv$Date.and.Time

我想尽快将这些日期(及其附带数据)转换为xts

我已经编写了一个脚本,它可以很好地执行转换(见下文),但是速度非常慢,我希望尽可能加快转换速度

这是我目前的方法。有人对如何加快这一进程有什么建议吗

 dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")

idx <- format(dt,tz=z,usetz=TRUE)
这是在3GhZ、16GB ram 2012 mb pro上实现的。我可以在Win7机器上使用32GB RAM的类似处理器获得大约一半的内存

我相信有人有更好的想法-我愿意通过
Rcpp
等方式接受建议。然而,理想情况下,解决方案与csv一起工作,而不是其他方法,如建立数据库。话虽如此,我可以通过任何能提供最快转换的方法来实现这一点


如果有任何帮助,我将不胜感激。提前感谢。

您想要Simon提供的小而简单的软件包,它可以以最快的方式完成这项工作——不调用时间解析函数,只使用C级字符串函数


它不支持像
strtime
那样多的格式。事实上,它甚至没有格式字符串。但是格式良好的ISO格式变体,即
yyyy-mm-dd hh:mm:ss.fff
将起作用,您的
/
分隔符也可能起作用。

尝试使用
lubridate
-它使用正则表达式进行所有日期时间解析,因此不仅速度更快,它也更灵活。

你知道哪一步是放慢速度的一步吗?
as.POSIXct
步骤、
格式
步骤还是
xts
步骤?如果你搜索fasttime(如果没有Dirk的答案,你不会知道会这样做),你会发现两个类似的Qs,我的天啊,我很少对解决方案的有效性感到惊讶,但我对此感到惊讶!非常感谢你。我在哪里给你们寄支票?系统。时间(dts它通常有助于了解一个人在做什么,Simon真的有这方面的诀窍:)
 user    system   elapsed 
155.246  16.430 171.650