2011-03-14 50 views
3

我想解析時間字符串的矢量,並遇到一個奇怪的錯誤。例如,如果我運行以下代碼段,則R按預期返回結果。R as.POSIXct解析錯誤

time_format="%m/%d/%Y %H:%M:%S" 
t_1 = "03/13/2011 01:00:10" 
as.POSIXct(t_1, format = time_format) 

輸出:

[1] "2011-03-13 01:00:10 EST" 

但是,如果我稍微改變時到凌晨2點

t_2 = "03/13/2011 02:00:10" 
as.POSIXct(t_2, format = time_format) 

輸出成爲:

[1] NA 

我可以重現它R 2.11.1和2.12.2在Windows 7和XP上。有沒有人遇到同樣的問題?

感謝, 德里克

+1

無法在OS X上的R版本2.12.0(2010-10-15)上重現。 – 2011-03-14 18:58:16

+0

我認爲這個問題可能特定於Windows。我在XP上試了它,贏了7,都產生了相同的錯誤。 – defoo 2011-03-14 19:13:01

+0

不,它可以在32位的Arch Linux機器上正常工作:''2011-03-13 02:00:10 CET「' – aL3xa 2011-03-14 19:16:19

回答

12

不能解析不存在的時間。 02:00:10不存在,因爲我們在這個星期六晚上/星期天早上有「春季前進」,並改用夏令時。 R知道這一點:

R> t_1 = "03/13/2011 01:00:10"; as.POSIXct(t_1, format = time_format) 
[1] "2011-03-13 01:00:10 CST" 
R> t_2 = "03/13/2011 02:00:10"; as.POSIXct(t_2, format = time_format) 
[1] "2011-03-13 01:00:10 CST" 
R> t_3 = "03/13/2011 03:00:10"; as.POSIXct(t_3, format = time_format) 
[1] "2011-03-13 03:00:10 CDT" 
R> 

在Linux上,我的時區庫似乎應付 - 02:00:10變成01:00:10因爲一小時被扣除。

+0

哈哈......好吧,我該死!我必須在塞爾維亞的春季前進後測試這一個...... =) – aL3xa 2011-03-14 19:41:54