将许多格式的日期时间转换为一种标准格式

时间:2014-07-03 10:34:11

标签: r datetime

我正在尝试在R中做一些简单的操作,在加载表后我遇到了一个日期列,其中包含多种格式。

    **Date**
1/28/14 6:43 PM
1/29/14 4:10 PM
1/30/14 12:09 PM
1/30/14 12:12 PM
02-03-14 19:49
02-03-14 20:03
02-05-14 14:33

我需要将其转换为28-01-2014 18:43格式,即%d-%m-%y %h:%m

我试过这个

 tablename$Date <- as.Date(as.character(tablename$Date), "%d-%m-%y %h:%m")

但是在整个列中填充NA。请帮助我做到这一点!

1 个答案:

答案 0 :(得分:7)

lubridate包快速完成了这项工作:

library(lubridate)

d <- parse_date_time(dates, names(guess_formats(dates, c("mdy HM", "mdy IMp"))))
d
## [1] "2014-01-28 18:43:00 UTC" "2014-01-29 16:10:00 UTC"
## [3] "2014-01-30 12:09:00 UTC" "2014-01-30 12:12:00 UTC"
## [5] "2014-02-03 19:49:00 UTC" "2014-02-03 20:03:00 UTC"
## [7] "2014-02-05 14:33:00 UTC"

# put in desired format

format(d, "%m-%d-%Y %H:%M:%S")
## [1] "01-28-2014 18:43:00" "01-29-2014 16:10:00" "01-30-2014 12:09:00"
## [4] "01-30-2014 12:12:00" "02-03-2014 19:49:00" "02-03-2014 20:03:00"
## [7] "02-05-2014 14:33:00"

如果您遇到其他格式变体,则需要在guess_formats中调整向量。