Разобрать временную метку с am / pm - PullRequest
9 голосов
/ 25 октября 2011

У меня есть файл, который форматирует отметки времени как 25/03/2011 9:15:00 p.m.

Как я могу проанализировать этот текст в классе Date-Time с strptime или as.POSIXct?

Вот что почти работает:

> as.POSIXct("25/03/2011 9:15:00", format="%d/%m/%Y %I:%M:%S", tz="UTC")
[1] "2011-03-25 09:15:00 UTC"

Вот что не работает, но я бы хотел работать:

> as.POSIXct("25/03/2011 9:15:00 p.m.", format="%d/%m/%Y %I:%M:%S %p", tz="UTC")
[1] NA

Я использую версию R 2.13.2 (2011-09-30) в MS Windows. Мой рабочий язык "C":

Sys.setlocale("LC_TIME", "C")

Ответы [ 2 ]

13 голосов
/ 25 октября 2011

Похоже, что индикатор AM / PM не может содержать знаки препинания. Попробуйте после удаления пунктуации:

td <- "25/03/2011 9:15:00 p.m."
tdClean <- gsub("(.)\\.?[Mm]\\.?","\\1m",td)
as.POSIXct(tdClean, format="%d/%m/%Y %I:%M:%S %p", tz="UTC")
# [1] "2011-03-25 21:15:00 UTC"
1 голос
/ 10 января 2017

Только что натолкнулся на это, в качестве другого варианта можно использовать пакет stringr.

library(stringr)
data$date2 <- str_sub(data$date, end = -4) 
# this removes the punctuation but holds onto the A/P values
data$date2 <- str_c(data$date2, 'm') 
# adds the required m
...