你好,亲爱的,知识渊博的R大师和斯塔克威夫花,
我试图使用lubridate中的guess_formats,在一系列数据集中一致地格式化日期。但是,这将连接列的两个实例。下面是一个很小的例子:
library(lubridate)
x <- c("2014-01-18 00:00:00","2015-03-01 00:00:00","2014-05-05 00:00:00")
y <- as.Date(x, format = guess_formats(x, "Ymd HMS"))结果:
> x
[1] "2014-01-18 00:00:00" "2015-03-01 00:00:00" "2014-05-05 00:00:00"
> y
[1] "2014-01-18" "2015-03-01" "2014-05-05" "2014-01-18" "2015-03-01"
[6] "2014-05-05"任何指示都是很棒的!
发布于 2018-05-16 12:05:16
问题在于guess_formats。
如果运行guess_formats(x, "Ymd HMS"),返回的格式不是3种格式,而是6种格式。
YOmdHMS YOmdHMS YOmdHMS YmdHMS YmdHMS YmdHMS
"%Y-%Om-%d %H:%M:%S" "%Y-%Om-%d %H:%M:%S" "%Y-%Om-%d %H:%M:%S" "%Y-%m-%d %H:%M:%S" "%Y-%m-%d %H:%M:%S" "%Y-%m-%d %H:%M:%S" 现在,您要将6种格式传递给as.Date,它将处理这些格式并回收x以进行匹配。如果您只是将这6种格式粘贴在as.Date中,就可以看到y向量的结果。
as.Date(x, format = c("%Y-%Om-%d %H:%M:%S", "%Y-%Om-%d %H:%M:%S", "%Y-%Om-%d %H:%M:%S" , "%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M:%S", "%Y-%m-%d %H:%M:%S")
[1] "2014-01-18" "2015-03-01" "2014-05-05" "2015-05-05" "2014-01-18" "2015-03-01"显而易见的解决方案是使用y <- ymd_hms(x),因为您正试图猜测这种格式,而ymd_hms已经尝试解析这种格式的许多不同版本。
https://stackoverflow.com/questions/50369861
复制相似问题