2017-09-02 24 views
0

5人投票結束此帖,但由於它有答案,該網站警告不要完全刪除它。將字符串轉換爲日期時間時獲取NA而不是日期時間

爲了使這一儘可能有用爲未來的讀者 - 如果你在做字符串到日期時間轉換,你(如果有的話)可能不指向你的問題的原因的警告和錯誤犯了語法錯誤。相反,您的輸出將被替換爲NA

這是原始示例代碼w /警告和錯誤。 樣品日期:5/20/2017 7:285/20/2017 2:28:57

示例代碼:

library(lubridate) 
ymd_hms('5/20/2017 7:28', tz = "America/New_York") 

> Warning message: 
All formats failed to parse. No formats found. 

strptime("5/20/2017 7:29:00","%m/%d/%Y %H:%M/%S") 

as.Date("5/20/2017 7:29:00") 

> Error in charToDate(x) : 
    character string is not in a standard unambiguous format 

as.POSIXct('5/20/2017 7:29:00',format="%Y-%m-%dT%H:%M:%OS") 

有,暗示他人遇到其他原因NA錯誤下面一個帖子:

lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")

在這案例:查看有關日期字符串格式化程序的文檔可能會避免這個問題,但在當時的文章中我沒有意識到這一點。解決問題的關鍵是理解錯誤並找到合適的位置。格式化程序設置正確的工作代碼的一個很好的例子就是對這個問題的接受答案。

+0

這工作沒有錯誤:'strptime(C( 「2017年5月20日7時29分30秒」,「2017年5月22日7:58「),」%m /%d /%Y%H:%M「)。 – lmo

回答

2

lubridate解決方案是我個人的最愛。

  1. 使用ymd,這意味着年 - 月 - 日:您使用它時,雖然做了兩個錯誤。相反,使用mdy月 - 日年
  2. 使用hms小時分鐘秒,但不提供秒。

嘗試

> mdy_hms('5/20/2017 7:28:00', tz = "America/New_York") 
[1] "2017-05-20 07:28:00 EDT" 

> mdy_hm('5/20/2017 7:28', tz = "America/New_York") 
[1] "2017-05-20 07:28:00 EDT" 
相關問題