为什么R中的as.Date函数会把我输入的年份转换成现在的2020年?

Why does the as.Date function in R converts the years I enter into the current year 2020?

我在数据框中有一些日期,当我使用 as.Date() 将它们转换为日期时,年份转换为 2020 年,这实际上是无效的,因为该文件只有最多的数据2018.

我目前拥有的:

> fechadeinsc1[2]
[1] "2020-08-15"

> class(fechadeinsc1)
[1] "Date"

> fechainsc[2]
[1] "2017/99/99"

> class(fechainsc)
[1] "character"

如您所见,fechadeinsc1 被转换为日期,fechainsc 是原始数据框,其元素是字符。 “fechadeinsc1”应该是同一年,不是吗?即使日期和月份无效。

另一个例子:

> fechadenac1[2]
[1] "2020-12-31"

> class(fechadenac1)
[1] "Date"

> fechanac[2]
[1] "12/31/2016"

> class(fechanac)
[1] "character"

再次,年份发生变化。

我的代码:

fechanac <- dat$fecha_nac
fechainsc <- dat$fecha_insc

fechadeinsc1 <- as.Date(fechainsc,tryFormats =c("%d/%m/%y","%m/%d/%y","%y","%d%m%y","%m%d%y"))
fechadenac1 <- as.Date(fechanac,tryFormats =c("%d/%m/%y","%m/%d/%y","%y","%d%m%y","%m%d%y"))

"dat"是厄瓜多尔2016年和2017年登记的新生儿信息的原始dataframe,如果有人想要原始的.csv文件,请联系我。

基于strptime, referred from as.Date,您应该使用大写 Y 表示 4 位数年份:

%y Year without century (00--99). On input, values 00 to 68 are prefixed by 20 and 69 to 99 by 19 -- that is the behaviour specified by the 2004 and 2008 POSIX standards, but they do also say ‘it is expected that in a future version the default century inferred from a 2-digit year will change’.

%Y Year with century. [...]