有没有办法清除r中的日期和时间数据?

有没有办法清除r中的日期和时间数据?,r,date,datetime,R,Date,Datetime,我试着把早上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-1

我试着把早上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
格式,方法如下=>如果您发现
-
,则将其替换为
//code>(日期格式)

我不知道如何实现这个目标


您可以使用
dplyr
库中的
case\u when()
来确定日期的格式,然后根据格式类型进行转换。在此基础上,我们检查24小时时间组件,以根据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
库(dplyr)
芝加哥15%
dplyr::mutate(Date2=dplyr::case_当(
grepl('-',Date)~as.POSIXct(日期,格式=“%m-%d-%y%H:%m”),
TRUE~as.POSIXct(日期,格式=“%m/%d/%Y%I:%m:%S%p”)
)) %>%
dplyr::mutate(Time\u of_Day=dplyr::case\u when(
as.numeric(格式(日期2,'%H'))>=21~'night',
as.numeric(格式(日期2,'%H'))>=12~'night',
as.numeric(格式(日期2,'%H'))>=4~'morning',
真的~‘夜’
))
日期日期2每天的时间
1 03/26/2015 06:56:30下午2015-03-26 18:56:30晚上
2014-12-15 20:24 2015-04-12 20:24:00晚上
3 03/26/2015 06:56:30 AM 2015-03-26 06:56:30上午
4 04-12-15 21:24 2015-04-12 21:24:00晚上
2017年12月31日03:28:43上午2017年12月31日03:28:43晚上

我的问题是。。为什么您的
datetime
字段具有不同的格式?不幸的是,您的答案在形式上缺乏质量。这样的投入很可能被否决和关闭。因此:请使用链接改进您的答案。另外,你应该注意到预览窗口(以及解释格式的帮助)可以提高你的发布质量。你能详细说明一下它在表单质量方面的不足吗?如果你有具体的建议,我很乐意做出改进。是的,当然,我的评论应该更清楚。没有文字解释你的答案,仅此而已。它被标记为低质量。这是一个公平的观点。我已经更新了我的答案,并对解决方案进行了一些评论。嗨,威尔,谢谢你的代码。但这并不奏效,因为结果删除了日期的时间部分,并且格式没有从“-”更改为“/”。部分结果为:2015-11-242015-05-192015-01-012015-06-242015-04-092015-07-292015-08-14