如何解决r中dd/mm/yy到yyyy-mm-dd转换错误的问题



我有一个变量,其日期从1960年到2000年(dd/mm/yy)被编码为字符,我试图使用下一个表达式将它们转换为日期:

MUJERES$Fecha_nacimiento <- as.Date(MUJERES$Fecha_nacimiento, "%d/%m/%y")

使用这个脚本,一些年份从"8/8/68"在"2060 - 08年- 08 -"。

如何将其转换为正确的年份(1960而不是2060)?

一种可能的(如果冗长)解决方案是将字符串分成日,月和年,使用paste019添加到年中,然后使用lubridatemake_date将它们重新编织在一起将它们转换为年格式。

MUJERES <- data.frame(fecha_nacimiento = c("8/8/68", "31/12/65"))
library(dplyr)
library(tidyr)
MUJERES |>
separate(fecha_nacimiento, into = c("d", "m", "y")) |> 
mutate(y = if_else(y == "00", "2000", paste0("19", y)),
fecha_nacimiento = lubridate::make_date(y, m, d)) |> 
select(-c(d, m, y))

输出
#>   fecha_nacimiento
#> 1       1968-08-08
#> 2       1965-12-31

通常的警告是,只有当你有外部信息,你的数据集中的所有日期肯定是在20世纪时,你才能这样做!

最新更新