Rのas.Date関数が、入力した年を現在の2020年に変換するのはなぜですか?

Aug 16 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年にエクアドルで登録された新生児に関する情報を含む元のデータフレームです。元の.csvファイルが必要な場合は、私に連絡してください。

回答

1 tevemadar Aug 16 2020 at 01:39

に基づいてstrptime、から参照されas.Date、4桁の年には大文字のYを使用する必要があります。

%y世紀のない年(00--99)。入力では、値00から68の前に20が、69から99の前に19が付きます。これは2004年と2008年のPOSIX標準で指定された動作ですが、将来のバージョンではデフォルトの世紀が推測されると予想されます。 2桁の年から変更されます '。

%Y世紀のある年。[...]