Dlaczego funkcja as.Date w R konwertuje lata wprowadzone na bieżący rok 2020?
Mam pewne daty w ramce danych, a kiedy używam as.Date () do konwersji ich na daty, lata są konwertowane na rok 2020, co nie jest tak naprawdę ważne, ponieważ plik zawiera tylko dane do 2018 roku.
Co mam do tej pory:
> fechadeinsc1[2]
[1] "2020-08-15"
> class(fechadeinsc1)
[1] "Date"
> fechainsc[2]
[1] "2017/99/99"
> class(fechainsc)
[1] "character"
Jak widać, fechadeinsc1 został przekształcony w datę, a fechainsc jest oryginalną ramką danych, której elementami są postacie. „fechadeinsc1” powinno dać ten sam rok, prawda? Mimo że dni i miesiące nie są ważne.
Inny przykład :
> fechadenac1[2]
[1] "2020-12-31"
> class(fechadenac1)
[1] "Date"
> fechanac[2]
[1] "12/31/2016"
> class(fechanac)
[1] "character"
Znowu rok się zmienia.
Mój kod :
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” to oryginalna ramka danych zawierająca informacje o noworodkach zarejestrowanych w 2016 i 2017 roku w Ekwadorze, jeśli ktoś chce mieć oryginalny plik .csv, proszę o kontakt.
Odpowiedzi
Na podstawie strptime, o których mowa w as.Date, powinieneś używać wielkich liter Y dla 4-cyfrowych lat:
%y
Rok bez wieku (00-99). Na wejściu wartości od 00 do 68 są poprzedzone prefiksami 20 i 69 do 99 przez 19 - to jest zachowanie określone w standardach POSIX z 2004 i 2008 roku, ale mówi się również, że `` oczekuje się, że w przyszłej wersji domyślny wiek zostanie określony z roku dwucyfrowego ulegnie zmianie ”.
%Y
Rok z wiekiem. […]