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