#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. Пожалуйста, напишите несколько слов о своем ответе и о том, почему он устраняет проблему.