R return 中的日期函数错误年份

date functions in R return wrong year

我正在尝试将字符字段转换为日期字段,其选项是使用 strptime 函数或 as.Date 函数。这是两个可重现的例子:

strptime(c("5/13/2015"),"%m/%d/%y")
#result is  "2020-05-13 MST"

as.Date(c("5/13/2015"), format = "%m/%d/%y")
#result is "2020-05-13"

为什么函数将年份从 2015 年更改为 2020 年?相反,我格式化我的日期字符串并使用它工作的 as.Date 函数。这是我所做的:

as.Date(c("2015/5/13"))

而且效果很好。

有什么想法吗?

我强烈推荐 lubridate 进行日期转换

library(lubridate)

mdy("5/13/2015")

# [1] "2015-05-13"

您的日期格式字符串应使用大写字母 "Y",以捕获带世纪的完整日期,例如“2015”。小写 "y" 用于捕获两位数的年份,如“2015”在 shorthand 中写为“15”。在您原来的情况下, strptimeas.Date 函数错误地将“2015”中的“20”解释为两位数的年份。更正版本:

strptime(c("5/13/2015"),"%m/%d/%Y")

"2015-05-13 EDT"