管理多种日期格式到 POSIXct

Manage multiple Date formats to POSIXct

我有两个具有两种不同日期格式的数据框,第一个是“%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 的函数?

感谢您的帮助。

Package lubridate 提供了非常好的选项来处理异构格式的 date/time。可以使用parse_date_time。以 OP 中指定的格式转换 date/time 的一个简单示例是:

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"