我有一个变量,其日期从1960年到2000年(dd/mm/yy)被编码为字符,我试图使用下一个表达式将它们转换为日期:
MUJERES$Fecha_nacimiento <- as.Date(MUJERES$Fecha_nacimiento, "%d/%m/%y")
使用这个脚本,一些年份从"8/8/68"在"2060 - 08年- 08 -"。
如何将其转换为正确的年份(1960而不是2060)?
一种可能的(如果冗长)解决方案是将字符串分成日,月和年,使用paste0
将19
添加到年中,然后使用lubridate
的make_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世纪时,你才能这样做!