R lubridate guess_formats 复制向量
R lubridate guess_formats duplicates vector
你好亲爱的知识渊博的 R 大师和 Whosebugers,
我正在尝试使用来自 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"
任何指点都会很棒!
问题出在guess_formats
.
如果你 运行 guess_formats(x, "Ymd HMS")
return 不是 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 已经尝试解析这种格式的许多不同版本。
你好亲爱的知识渊博的 R 大师和 Whosebugers,
我正在尝试使用来自 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"
任何指点都会很棒!
问题出在guess_formats
.
如果你 运行 guess_formats(x, "Ymd HMS")
return 不是 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 已经尝试解析这种格式的许多不同版本。