为什么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. [...]
我在数据框中有一些日期,当我使用 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. [...]