Преобразование метки времени / зоны в R datetime - PullRequest
0 голосов
/ 27 марта 2019

У меня есть следующая отметка времени: "03-APR-06 12.41.00.000000000 PM US/CENTRAL" и необходимо преобразовать его в R-совместимую временную метку.

Я пробовал:

structure(df2$ACTION_IN_DTTM_TZ,class=c('POSIXct'))
parse_date_time(df2$ACTION_IN_DTTM_TZ, "abdHMSzY")
strptime(df2$ACTION_IN_DTTM_TZ,format='%d/%b/%Y:%H:%M:%S:%p:%Z')

и все они сгенерировали NA

structure(df2$ACTION_IN_DTTM_TZ,class=c('POSIXct'))
parse_date_time(df2$ACTION_IN_DTTM_TZ, "abdHMSzY")
strptime(df2$ACTION_IN_DTTM_TZ,format='%d/%b/%Y:%H:%M:%S:%p:%Z')

Мне бы хотелось: 2012-08-10 04:42:47

Любые предложения с благодарностью! Спасибо!

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Я сделал что-то вроде:

a <-  "03-APR-06 12.41.00.000000000 PM US/CENTRAL"
b <- (substr(a,1,18))
c <- as.POSIXct(b,format='%d-%b-%y %H.%M.%S')
0 голосов
/ 27 марта 2019

Пакет lubridate обеспечивает функциональность для этого.Я извлек часовой пояс с помощью простой команды str_extract.

library(lubridate)
library(stringr)
timestamp <- "03-APR-06 12.41.00.000000000 PM US/CENTRAL"
as_datetime(timestamp,tz=str_extract(timestamp,"\\S*$"))
[1] "2003-04-06 00:41:00 CST"

#without lubridate
strptime(strsplit(timestamp," \\S*$")[[1]][1],format="%y-%b-%d %I.%M.%S.%OS %p",tz=str_extract(timestamp,"\\S*$"))
...