日期格式不一致

时间:2014-11-14 20:10:57

标签: r

我使用R来分析一些数据并且我有这个数据集,并且我试图获得仅使用最新日期的数据子集。我在这方面遇到了麻烦,而且我的一些日期有不同的格式。

离。 00年10月1日      00年10月1日      二零零零年十月二十〇日      2000年5月13日

如何让这些格式完全相同?

2 个答案:

答案 0 :(得分:1)

您可以尝试guess_formats

中的lubridate
x <- c("10/01/00", "10/01/00", "10/20/2000", "05/13/2000")
library(lubridate)
as.Date(x, guess_formats(x, "mdy"))
# [1] "2000-10-01" "2000-10-01" "2000-10-20" "2000-05-13"

答案 1 :(得分:0)

如果他们都是2000或以后试试这个:

x <- c("10/01/00", "10/01/00", "10/20/2000", "05/13/2000") # test data

xx <- as.Date(sub("/(..)$", "/20\\1", x)); xx
## [1] "10/01/2000" "10/01/2000" "10/20/2000" "05/13/2000"

如果目标是采用最近的日期,那么无论日期是否为2000或更晚,只要没有超过100年的日期,这将是有效的。假设我们已经运行了上述行,如果所有日期都在将来,那么最近的日期必须在20世纪,所以重复sub但是19而不是20并取最大值;否则,最大日期必须是20xx,所以取消将来的日期并采取剩余的最大值:

if (all(xx > Sys.Date()) max(as.Date(sub("/(..)$", "/19\\1", x)))
else max( xx[xx <= Sys.Date()] )

更新一些改进。