我有一个 data.table,其中的字符分为两列,如下所示:
01/01/2014 | 00:30
02/01/2014 | 01:00
03/01/2014 | 01:30 etc
该数据集的长度各不相同,但每次运行脚本时很容易超过 300,000 行。最终我知道这个脚本需要处理超过 30,000,000 行的数据集。
我现在paste
它们的形式如下:
DT[, DateTime := paste(Date, Time)
这导致:
01/01/2014 00:30
02/01/2014 01:00
03/01/2014 01:30 etc
然后我用as.POSIXct
将其转换为 POSIX 日期:
DT[, DateTime:= as.POSIXct(x = DateTime, format = "%d/%m/%Y %H:%M")]
这工作得很好,正确地转换了字符,很大程度上我相信是因为我设置了格式参数来匹配它所输入的字符串的结构。
但是,我想使用fasttime
包,但有一个固有的问题,即它不支持format
输入参数。因此,当我运行时:
DT[, DateTime := fastPOSIXct(x = DateTime)]
fasttime
必须将我的数据解释为“解释顺序是固定的:年、月、日、小时、分钟、秒”。输出结果如下:
2006/07/07 00:30
2007/07/07 01:00
2008/07/07 01:30 etc
因此,看来我要么必须使用as.POSIXct
,或者找到一种方法将字符串操作为正确的顺序。
让我使用最有效的方法是什么fasttime
?我应该如何重新排序字符串以匹配?您是否认为值得对字符串重新排序以便使用fasttime
,或者是否会增加纠正字符串的要求fasttime
节省可以忽略不计吗?