У меня есть данные, которые выглядят так. Это дата-фрейм, содержащий дату рождения (среди прочего) для ряда людей.
library(tidyr)
library(dplyr)
library(magrittr)
library(lubridate)
df <- data.frame(
DATE_OF_BIRTH = c("20/10/01" , "15/04/88", "16/12/58", "15/10/91", "09/02/66", "02/07/03", "20/08/96", "22/04/99", "17/04/87", "17/08/56",
"28/05/40", "26/07/59", "02/04/65", "17/08/93", "01/08/86", "30/07/01", "03/09/75", "17/09/65", "16/02/95", "11/06/03",
"26/10/64", "25/02/73", "07/02/90", "31/03/38", "05/03/83", "10/02/61", "01/07/40", "15/08/51", "19/12/75", "25/11/58",
"05/11/81", "05/12/02", "06/05/40", "23/09/69", "17/04/48", "02/07/58", "04/03/98", "26/11/03", "08/01/91", "23/12/07",
"05/05/01", "23/10/08", "01/01/09", "29/10/63", "26/03/09", "03/02/75", "03/09/04", "17/01/80", "19/03/11", "05/07/83")
)
Что я хочу сделать, это рассчитать возраст каждого человека на основе даты его рождения по состоянию на 1 июля 2017 года.
Для расчета возраста я использую следующий код:
df <- df %>%
mutate(age = interval(start = dmy(df$DATE_OF_BIRTH), end = dmy('01/07/17')) /
duration(num = 1, units = "years"))
Вывод этого корректен для некоторых людей, но для других я получаю отрицательное значение. Для этих людей их фактический возраст - это абсолютное значение возраста abs(age)
плюс 17.
Может кто-нибудь сказать мне, как получить только положительные значения для возраста? Спасибо.
Я видел следующий вопрос: Эффективный и точный расчет возраста (в годах, месяцах или неделях) в R с учетом даты рождения и произвольной даты , но это не включает проблему с отрицательным возраст как выход.