Вы можете решить это с помощью пакета lubridate.
> library(lubridate)
Я не думаю, что / 1931 - распространенный класс дат. Поэтому я предполагаю, что все записи являются символьными строками.
> RECENT <- data.frame(recent = c("09/08/2005", "11/08/2005"))
> YEAR <- data.frame(year = c("/1931", "/1924"))
Во-первых, давайте уведомим R, что последние даты являются датами. Я предполагаю, что даты указаны в порядке месяц / день / год, поэтому я использую mdy (). Если они в порядке дня / месяца / года, просто используйте dmy ().
> RECENT$recent <- mdy(RECENT$recent)
recent
1 2005-09-08
2 2005-11-08
Теперь давайте превратим годы в числа, чтобы мы могли с ними кое-что посчитать.
> YEAR$year <- as.numeric(substr(YEAR$year, 2, 5))
Теперь просто посчитай. year () извлекает значение года из последних дат.
> year(RECENT$recent) - YEAR
year
1 74
2 81
p.s. если ваши записи года фактически являются полными датами, вы можете получить разницу в годах с помощью
> 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