Teradata からエクスポートされた .csv データを使用しています。いくつかの列はもともとタイムゾーン付きのタイムスタンプだったので、.csv を R にロードした後、これらの列 (文字列としてロードされたもの) を POSIXlt または POSIXct に変換したいと思います。を使用していますが、.csv ファイルからのタイムゾーンの形式が予期したstrptimeものと一致しません。strptimeたとえば、期待どおりです-0400が、.csv の形式-04:00はコロンで時間と分が区切られています。
コロンを削除することはできますが、これは余分な手順であり、できれば避けたい合併症です。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 の複数の列の日付に変換するための洗練された柔軟な関数を誰かが持っていますか?