格式化不一致的日期时间变量

时间:2017-09-07 14:41:15

标签: r date datetime format

我有一个大型数据集(几百万个观察点),其中包含一个格式不一致的日期时间变量:"%Y-%m-%d%H:%M:%S" ; "%m /%d /%Y和%H:%M:%S"。

以下是数据集的外观:

df <- data.frame(var1 = c(1:6), 
   var2 = c("A", "B", "C", "A", "B", "C"), 
   datetime = c("2013-07-01 00:00:02", "2016-07-01 00:00:01", 
            "9/2/2014 00:01:20", "9/1/2014 00:00:25",
            "1/1/2015 0:07", "6/1/2015 0:01"))

是否有一种有效的方法将datetime变量格式化为唯一,一致的日期时间格式?

2 个答案:

答案 0 :(得分:2)

POSIXCT解决方案使用parse_date_time

编辑:合并@Akarsh Jain的POSIXCT格式以更好地协调时间。

df$new_date <- parse_date_time(df$datetime, c("%Y-%m-%d %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M"))

答案 1 :(得分:2)

您可以像这样使用lubridate包。

lubridate::parse_date_time(x = df$datetime, c("ymd HMS","mdy HMS"))

[1] "2013-07-01 00:00:02 UTC" "2016-07-01 00:00:01 UTC" "2014-09-02 00:01:20 UTC"
[4] "2014-09-01 00:00:25 UTC" NA                        NA                       
Warning message:
 2 failed to parse. 

lubridate::parse_date_time(x = df$datetime, c("ymd HMS","mdy HMS","mdy HM"))

[1] "2013-07-01 00:00:02 UTC" "2016-07-01 00:00:01 UTC" "2014-09-02 00:01:20 UTC"
[4] "2014-09-01 00:00:25 UTC" "2015-01-01 00:07:00 UTC" "2015-06-01 00:01:00 UTC"
  

您可以根据需要指定日期时间格式,您可以比较我提到的两个例子。

希望这会对你有所帮助。 :)