Как разделить столбец даты и времени, чтобы он распознавал 24-часовые часы в r? - PullRequest
1 голос
/ 16 апреля 2020

Я пытаюсь разделить столбец, который содержит дату и время, чтобы разделить столбцы времени, дня, месяца, года, дневной недели, часа и минут. Я могу разделить столбцы, но единственная проблема заключается в том, что время AM и PM не разделяются, и показывается только 1 - 12 часов вместо разделения часов AM и PM, даже если в исходном наборе данных используется 24-часовое время. Мне было интересно, если кто-нибудь знает способ сделать это?

Код, который я использую для разделения столбца:

taxijuly$Trip.Start.Timestamp <- as.POSIXct(taxijuly$Trip.Start.Timestamp, format = "%m/%d/%Y %H:%M:%S")

taxijuly$Time <- format(as.POSIXct(taxijuly$Trip.Start.Timestamp, format = "%m/%d/%Y %H:%M:%S"), format="%H:%M:%S")

taxijuly$Trip.Start.Timestamp <- ymd_hms(taxijuly$Trip.Start.Timestamp)

taxijuly$day <- factor(day(taxijuly$Trip.Start.Timestamp))

taxijuly$month <- factor(month(taxijuly$Trip.Start.Timestamp, label = TRUE))

taxijuly$year <- factor(year(taxijuly$Trip.Start.Timestamp))

taxijuly$dayofweek <- factor(wday(taxijuly$Trip.Start.Timestamp, label = TRUE))

taxijuly$hour <- factor(hour(hms(taxijuly$Time)))

taxijuly$minute <- factor(minute(hms(taxijuly$Time)))

taxijuly$second <- factor(second(hms(taxijuly$Time)))

, а данные в столбце, которые я пытаюсь разделить, выглядят так:

Trip Start Timestamp

09/03/2019 00:00
09/03/2019 00:00
09/03/2019 00:00
09/03/2019 00:00

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 16 апреля 2020

Как только мы конвертируем в «Datetime», дальнейшее преобразование не требуется. Поскольку мы используем lubridate, удобные функции из пакета можно использовать для извлечения компонентов

library(lubridate)
library(dplyr)
out <- taxijuly %>%
         mutate(Trip.Start.Timestamp = mdy_hms(Trip.Start.Timestamp), 
          day = day(Trip.Start.Timestamp),
          month = month(Trip.Start.Timestamp), 
          year = year(Trip.Start.Timestamp),
          dayofweek = wday(Trip.Start.Timestamp),
          minute = minute(Trip.Start.Timestamp),
          second = second(Trip.Start.Timestamp))

data

taxijuly <- structure(list(Trip.Start.Timestamp = c("09/03/2019 00:00", "09/03/2019 00:00", 
"09/03/2019 00:00", "09/03/2019 00:00")), class = "data.frame", row.names = c(NA, 
-4L))
...