如何在R中将以下日期格式转换为标准日期格式?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (65)

我在数据框中有低于日期和时间的值,有些值是“/”格式,有些是“ - ”格式。我应该如何标准化格式并保持“DD-MM-YYYY HH:MM:SS”。此外,在某些情况下,秒值不存在。有什么建议么 ?

Datime$Day
11/7/2016 11:51
11/7/2016 17:57
12/7/2016 9:17
12/7/2016 21:08
13-07-2016 08:33:16
13-07-2016 21:57:28
14-07-2016 06:15:32
15-07-2016 05:11:52
15-07-2016 17:57:27
提问于
用户回答回答于

使用基础库:

strptime(paste0(gsub("/","-",Datime$Day),":00"),"%d-%m-%Y %H:%M:%S","UTC") 
[1] "2016-07-11 11:51:00 UTC" "2016-07-11 17:57:00 UTC"
[3] "2016-07-12 09:17:00 UTC" "2016-07-12 21:08:00 UTC"
[5] "2016-07-13 08:33:16 UTC" "2016-07-13 21:57:28 UTC"
[7] "2016-07-14 06:15:32 UTC" "2016-07-15 05:11:52 UTC"
[9] "2016-07-15 17:57:27 UTC"
用户回答回答于

一种选择是parse_date_timelubridate匹配多个模式并将其转换为datetime类,请执行以下操作

library(lubridate)
parse_date_time(Datime$Day, c("%d/%m/%Y %H:%M", "%d-%m-%Y %H:%M:%S"))
#[1] "2016-07-11 11:51:00 UTC" "2016-07-11 17:57:00 UTC"
#[3] "2016-07-12 09:17:00 UTC" "2016-07-12 21:08:00 UTC"
#[5] "2016-07-13 08:33:16 UTC" "2016-07-13 21:57:28 UTC"
#[7] "2016-07-14 06:15:32 UTC" "2016-07-15 05:11:52 UTC"
#[9] "2016-07-15 17:57:27 UTC"

另一个选择是anytime(如果在默认格式列表中找不到格式getFormats(),请添加新格式addFormats())

library(anytime)
addFormats( c("%d/%m/%Y %H:%M", "%d-%m-%Y %H:%M:%S"))
anytime(Datime$Day)

数据

Datime <- structure(list(Day = c("11/7/2016 11:51", "11/7/2016 17:57", 
"12/7/2016 9:17", "12/7/2016 21:08", "13-07-2016 08:33:16", 
   "13-07-2016 21:57:28", 
"14-07-2016 06:15:32", "15-07-2016 05:11:52", "15-07-2016 17:57:27"
)), .Names = "Day", 
   class = "data.frame", row.names = c(NA, -9L
))

扫码关注云+社区

领取腾讯云代金券