簡體   English   中英

有沒有辦法清理 r 中的日期和時間數據?

[英]Is there a way to clean date and time data in r?

我試圖總結從凌晨 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轉換為04-12-15 20:24 03/26/2015 06:56:30 PM格式,方法是 => 如果你找到-然后用/ (用於日期格式)。

我不知道如何實現這個目標。

附上部分數據的圖片

您可以使用case_when()dplyr庫來確定日期的格式,然后基於該格式類型的轉換進行。 從那里我們檢查 24H 時間組件以確定基於 OP 中的 bin 的時間。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM