Как конвертировать формат времени R? - PullRequest
1 голос
/ 03 мая 2019

У меня есть датафрейм со временем в следующем формате:

Time
01.01.2017 01:00
01.01.2017 02:00
01.01.2017 03:00
01.01.2017 04:00 
01.01.2017 05:00 
01.01.2017 06:00

class(df$Time) 
[1] "factor"

Его день, месяц, год, часы, минуты. Я хочу преобразовать это в удобочитаемое время. Я уже пробовал это:

strptime(df$Time, format="%d-%m-%Y  %H:%M")
as.POSIXct(df$Time)

Это не работает. Как я могу преобразовать это и изменить формат на: 2017-01-01 01:00. Поэтому я хочу иметь год, месяц, день, часы, минуты.

Ответы [ 2 ]

5 голосов
/ 03 мая 2019

Чтение ?strptime необходимо, чтобы format было

strptime("01.01.2017 01:00", format="%d.%m.%Y  %H:%M")
#[1] "2017-01-01 01:00:00"

Если вам нужен вывод в определенном формате, мы можем использовать format

format(strptime("01.01.2017 01:00", format="%d.%m.%Y  %H:%M"), "%Y-%m-%d  %H:%M")
#[1] "2017-01-01  01:00"

То жебудет работать с as.POSIXct

as.POSIXct("01.01.2017 01:00", format="%d.%m.%Y  %H:%M")

Или чтобы игнорировать указание форматов напрямую, используйте lubridate::dmy_hm

lubridate::dmy_hm("01.01.2017 01:00")

Одна вещь, на которую стоит обратить внимание, как упомянуто @ 42-, хотя они выглядят одинакововывод format является символьным значением, тогда как вывод as.POSIXct и strptime является значением даты-времени.

1 голос
/ 03 мая 2019

Мы можем просто использовать anytime

librrary(anytime)
anytime(df$Time)
#[1] "2017-01-01 01:00:00 EST" "2017-01-01 02:00:00 EST" "2017-01-01 03:00:00 EST" "2017-01-01 04:00:00 EST"
#[5] "2017-01-01 05:00:00 EST" "2017-01-01 06:00:00 EST"

ПРИМЕЧАНИЕ: для этого поста есть несколько дубликатов

Возможные ошибки это или это или это

данные

df <- structure(list(Time = c("01.01.2017 01:00", "01.01.2017 02:00", 
 "01.01.2017 03:00", "01.01.2017 04:00", "01.01.2017 05:00", 
 "01.01.2017 06:00"
 )), class = "data.frame", row.names = c(NA, -6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...