2013-06-18 72 views
0

我經常需要將(長)字符串轉換爲R中的日期類。我注意到這一步看起來很慢。在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

http://stackoverflow.com/questions/14218297/convert-string-date-to-r-date-fast-for-all-dates –

+2

有包[快速時間](http://www.rforge。 net/fasttime /),但它需要一個特定的格式。 – Roland

+0

http://stackoverflow.com/questions/12898318/convert-character-to-date-quickly-in-r –

回答

3

由於我在寫這篇文章之前曾經指出這是重複的,所以無論如何我都會將它添加爲答案。基本上包fasttime可以幫助你IF你有日期1970-01-01 00:00:00他們GMT他們的格式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或購買更快的計算機?!

+0

根據我所見(從你的回答以及@BenBolker評論中的回答/評論,似乎沒有真正簡單的解決方案。感謝快速提示,購買更快的計算機?呃,它已經很快了,我只是試圖留意如何在編程方面做得更好。 – rbatt