Puede resolver esto con el paquete lubridate.
> library(lubridate)
No creo/1931 es una clase de fecha común. Así que supondré que todas las entradas son cadenas de caracteres.
> RECENT <- data.frame(recent = c("09/08/2005", "11/08/2005"))
> YEAR <- data.frame(year = c("/1931", "/1924"))
En primer lugar, notifiquemos a R que las fechas recientes son fechas. Asumiré que las fechas están en orden de mes/día/año, entonces uso mdy(). Si están en orden día/mes/año simplemente use dmy().
> RECENT$recent <- mdy(RECENT$recent)
recent
1 2005-09-08
2 2005-11-08
Ahora, convirtamos los años en números para que podamos hacer algunos cálculos con ellos.
> YEAR$year <- as.numeric(substr(YEAR$year, 2, 5))
Ahora haz las cuentas. year() extrae el valor anual de las fechas RECIENTES.
> year(RECENT$recent) - YEAR
year
1 74
2 81
p.s.Si las entradas de año son fechas realmente lleno, se puede obtener la diferencia en años con
> YEAR1 <- data.frame(year = mdy("01/08/1931","01/08/1924"))
> as.period(RECENT$recent - YEAR1$year, units = "year")
[1] 74 years and 8 months 81 years and 10 months
relevante: https://stackoverflow.com/questions/31126726/efficient-and-accurate-age-calculation-in-years -months-or-weeks-in-r-given-b? noredirect = 1 & lq = 1 –