我正在使用從Teradata導出的.csv數據。幾列最初是帶時區的時間戳,所以在R中加載.csv之後,我想將這些列(它們作爲字符串加載)轉換爲POSIXlt或POSIXct。我正在使用strptime
,但.csv文件中的時區格式與strptime
所期望的格式不匹配。例如,它期望-0400
,但.csv的格式爲-04:00
,冒號分隔小時和分鐘。以特殊時區格式使用strptime%z
我可以刪除冒號,但這是一個額外的步驟和併發症,我想盡量避免。有沒有辦法告訴strptime
使用不同的時區格式(%z
)?
下面是一個例子:
## Example data:
x <- c("2011-10-12 22:17:13.860746-04:00", "2011-10-12 22:17:13.860746+00:00")
format <- "%Y-%m-%d %H:%M:%OS%z"
## Doesn't work:
strptime(x,format)
## [1] NA NA
## Ignores the timezone:
as.POSIXct(x)
## [1] "2011-10-12 22:17:13 EDT" "2011-10-12 22:17:13 EDT"
## Remove the last colon:
x2 <- gsub("(.*):", "\\1", x)
x2
## [1] "2011-10-12 22:17:13.860746-0400" "2011-10-12 22:17:13.860746+0000"
## This works, but requires extra processing (removing the colon)
strptime(x2,format)
## [1] "2011-10-12 22:17:13" "2011-10-12 18:17:13"
所以我希望獲得使用類似strptime(x,"%Y-%m-%d %H:%M:%OS%zz")
,其中%zz
是承認的-04:00
格式的時區自定義表達式這最後的結果。或者%zH:%zM
可能會更好。
如果這是不可能的,是否有人有一個光滑/靈活的函數用於將字符串(各種格式)轉換爲data.frame/data.table的多列日期?
這是2016年世界仍然必須處理這個... – sehe 2016-07-09 23:22:06