管理POSIXct的多种日期格式

时间:2018-01-28 22:43:00

标签: r lubridate

我有两个数据框,有两种不同的日期格式,第一种是“%d /%m /%Y%H:%M:%S”,第二种是“%Y-%m-%d%H:% M:%S”

我想创建一个通过指示格式转换为POSIXct的函数。

我的代码:

date_func <- function(df){
 colnum <- grep("DATE", colnames(df))
 df[, (colnum) := lapply(.SD, dmy_hms), .SDcols = colnum]
 return(df)
}

对于第一种格式,它可以正常工作,但对于第二种格式,转换后我只有NA值。

那么,如何创建一个无论指定格式转换为POSIXct的函数?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

lubridate提供了以异构格式处理日期/时间的非常好的选项。可以使用parse_date_time。以OP中指定的格式转换日期/时间的简单示例是:

library(lubridate)
>parse_date_time(c("01/12/2016 01:11:54", "2015-12-31 10:05:11"), c("dmY HMS", "Ymd HMS"))
# [1] "2016-12-01 01:11:54 UTC" "2015-12-31 10:05:11 UTC"