Преобразовать в дату и время полосы?

У меня есть некоторые данные, которые выглядят так:

dates <- structure(c(1L, 2L, 4L, 3L), .Label = c("Sat, 18 Nov 2017 00:00:00 GMT", 
                                             "Thu, 16 Nov 2017 00:00:00 GMT", "Tue, 14 Nov 2017 00:00:00 GMT", 
                                             "Wed, 15 Nov 2017 00:00:00 GMT"), class = "factor")

Я хотел бы преобразовать это в формат даты вместо того, чтобы иметь это как фактор. Кроме того, я хочу лишить 00:00:00 по Гринвичу, потому что это бессмысленно

Я старался lubridate но у меня проблемы с форматом:

library(lubridate)
mdy(dates)
Warning message:
All formats failed to parse. No formats found.

3 ответа

Решение

Похоже, это работает:

as.POSIXct(dates, format = '%a, %d %b %Y %H:%M:%S')
#[1] "2017-11-18 GMT" "2017-11-16 GMT" "2017-11-15 GMT" "2017-11-14 GMT"

Мы также можем использовать dmy_hms от lubridate пакет.

library(lubridate)

dmy_hms(dates, tz = "GMT")
# [1] "2017-11-18 GMT" "2017-11-16 GMT" "2017-11-15 GMT" "2017-11-14 GMT"

Использование as.Date как это. Он игнорирует мусор в конце, так что это работает. Пакеты не используются.

as.Date(dates, "%a, %d %b %Y")
## [1] "2017-11-18" "2017-11-16" "2017-11-15" "2017-11-14"
Другие вопросы по тегам