Есть ли способ очистить данные даты и времени в r? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь обобщить время с 4 до 12 часов утра, с 12 до 9 вечера и с 9 вечера до 4 часов ночи. Я делаю это, чтобы создать модель логистической регрессии, чтобы узнать, произойдет ли арест или нет, учитывая тип преступления и время преступления.

Я пытался использовать функцию lubridate, но так как формат - это строка, я не могу использовать эту функцию. И функция as.Date не помогает, поскольку некоторые строки имеют это значение: 03/26/2015 06:56:30 PM, в то время как некоторые строки имеют это значение: 04-12-15 20:24. Оба формата совершенно разные, поэтому не могут использовать функцию as.Date.

Помимо функции as.Date, мы можем преобразовать все 04-12-15 20:24 в 03/26/2015 06:56:30 PM формат, выполнив что-то вроде =>, если вы найдете -, а затем замените его на / (для формата даты ).

Я не знаю, как достичь этой цели.

Attached is the image of a part of the data

1 Ответ

2 голосов
/ 01 апреля 2019

Вы можете использовать case_when() из библиотеки dplyr, чтобы определить формат даты, а затем продолжить преобразование на основе типа формата. Оттуда мы проверяем компонент времени 24H, чтобы определить время суток на основе бинов в OP.

library(dplyr)

chicago15 <- data.frame(Date = c("03/26/2015 06:56:30 PM","04-12-15 20:24",
                             "03/26/2015 06:56:30 AM","04-12-15 21:24",
                             "12/31/2017 03:28:43 AM"))

chicago15 %>% 
  dplyr::mutate(Date2 = dplyr::case_when(
    grepl('-',Date) ~ as.POSIXct(Date,format = '%m-%d-%y %H:%M'),
    TRUE ~ as.POSIXct(Date,format = '%m/%d/%Y %I:%M:%S %p')
  )) %>%

  dplyr::mutate(Time_of_Day = dplyr::case_when(
    as.numeric(format(Date2,'%H')) >= 21 ~ 'night',
    as.numeric(format(Date2,'%H')) >= 12 ~ 'evening',
    as.numeric(format(Date2,'%H')) >= 4 ~ 'morning',
    TRUE ~ 'night'
  ))

  Date                   Date2               Time_of_Day
1 03/26/2015 06:56:30 PM 2015-03-26 18:56:30     evening
2         04-12-15 20:24 2015-04-12 20:24:00     evening
3 03/26/2015 06:56:30 AM 2015-03-26 06:56:30     morning
4         04-12-15 21:24 2015-04-12 21:24:00       night
5 12/31/2017 03:28:43 AM 2017-12-31 03:28:43       night
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...