我有一个大型数据集(几百万个观察点),其中包含一个格式不一致的日期时间变量:"%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变量格式化为唯一,一致的日期时间格式?
答案 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"
您可以根据需要指定日期时间格式,您可以比较我提到的两个例子。
希望这会对你有所帮助。 :)