Преобразование YYYYMMDDHHMMSS в класс даты и времени в r

#r #lubridate #as.date

Вопрос:

У меня есть набор данных, содержащий дату и время в следующем формате:

 datetimelt;- c(20210830102055, 20210830102312, 20210830102335) cycle lt;- c(25, 30, 35) df lt;- data.frame(datetime, cycle) df   datetime cycle 1 2.021083e 13 25 2 2.021083e 13 30 3 2.021083e 13 35  

Я пытаюсь преобразовать столбец даты и времени в

 datetime2lt;- c("2021-08-30 10:20:55", "2021-08-30 10:23:12", "2021-08-30 10:23:35") df lt;- data.frame(datetime2, cycle) df   datetime2 cycle 1 2021-08-30 10:20:55 25 2 2021-08-30 10:23:12 30 3 2021-08-30 10:23:35 35  

Есть ли эффективный способ сделать это?

Спасибо

Ответ №1:

Вы можете использовать ymd_hms() в lubridate упаковке:

 datetimelt;- c(20210830102055, 20210830102312, 20210830102335) cycle lt;- c(25, 30, 35) df lt;- data.frame(datetime = ymd_hms(datetime), cycle)  

Ответ №2:

В базе R:

 data.frame(datetime2=as.POSIXct(as.character(df$datetime),  format="%Y%m%d%H%M%S"),   cycle)  

Выход:

 datetime2 cycle 1 2021-08-30 10:20:55 25 2 2021-08-30 10:23:12 30 3 2021-08-30 10:23:35 35  

Ключ здесь as.POSIXct в том, чтобы format :

 gt; as.POSIXct(as.character(df$datetime), format="%Y%m%d%H%M%S") [1] "2021-08-30 10:20:55 CST" "2021-08-30 10:23:12 CST" "2021-08-30 10:23:35 CST" gt;  

Ответ №3:

 datetimelt;- c(20210830102055, 20210830102312, 20210830102335) cycle lt;- c(25, 30, 35) df lt;- data.frame(datetime, cycle)  # METHOD 1 df$datetime lt;- as.POSIXct(as.character(df$datetime) , format = "%Y%m%d%H%M%S")  # METHOD 2  library(lubridate) df$datetime lt;- ymd_hms(df$datetime)  

Комментарии:

1. Пожалуйста, напишите несколько слов о своем ответе и о том, почему он устраняет проблему.