我经常需要将(长)字符串转换为R中的日期类。我注意到这一步看起来很慢。
示例:
date <- c("5/31/2013 23:30", "5/31/2013 23:35", "5/31/2013 23:40", "5/31/2013 23:45", "5/31/2013 23:50", "5/31/2013 23:55")
Date <- as.POSIXct(date, format="%m/%d/%Y %H:%M")
这不是一个大问题,但我想知道我是否忽略了提高效率的简单途径。加速这个的任何提示?感谢。
答案 0 :(得分:4)
因为我在指出它之前写了这个是重复的,所以无论如何我都会把它添加为答案。基本上,包fasttime
可以帮助您如果您有 AFTER 1970-01-01 00:00:00
和日期GMT
< em> AND 它们的格式为year, month, day, hour, minute, second
。如果您可以将日期重写为此格式,那么fastPOSIXct
将很快:
# data
date <- c( "2013/5/31 23:30" , "2013/5/31 23:35" , "2013/5/31 23:40" , "2013/5/31 23:45" )
require(fasttime)
# fasttime function
dates.ft <- fastPOSIXct( date , tz = "GMT" )
# base function
dates <- as.POSIXct( date , format= "%Y/%m/%d %H:%M")
# rough comparison
require(microbenchmark)
microbenchmark( fastPOSIXct( date , tz = "GMT" ) , as.POSIXct( date , format= "%Y/%m/%d %H:%M") , times = 100L )
#Unit: microseconds
# expr min lq median uq max neval
# fastPOSIXct(date, tz = "GMT") 19.598 21.699 24.148 25.5485 215.927 100
# as.POSIXct(date, format = "%Y/%m/%d %H:%M") 160.633 163.433 168.332 181.9800 278.220 100
但问题是,将日期转换为fasttime
可以接受或仅使用as.POSIXct
或购买更快的计算机的格式会更快吗?