Рассчитать разницу в годах двух дат в R - PullRequest
2 голосов
/ 26 мая 2019

У меня есть фрейм данных, и я хочу вычислить разницу в годах по двум столбцам (давайте назовем id "Age").

У меня проблемы с корректировкой даты второго столбца. Althoug, мне удалось сделать это в соответствии с Sys.Date ():

require(eeptools)
require(ggplot2)
DT$Age<-age_calc(DT$DateBirth, enddate=Sys.Date(), units="years", 
precise=T)

Но, когда я изменил Sys.Date () на имя столбца (который называется DateUpdated):

DT<-data.table(Id=c(1,2,3),DateBirth=c("01/01/1990 
","06/05/1980","07/09/2000"),DateUpdated=c("01/01/2019","03/04/2019",
"06/05/2019"),Age=c(29,38,18))

DT[,DateBirth:=as.Date(DateBirth,format= "%d/%m/%Y")]
DT[,DateUpdated:=as.Date(DateUpdated,format= "%d/%m/%Y")]

DT$Age<-age_calc(DT$DateBirth, enddate=DateUpdated, units="years", 
precise=T)

Возвращает следующую ошибку:

Error in age_calc(DT$DateBirth, enddate = DateUpdated, units = 
"years",  : object 'DateUpdated' not found

Может кто-нибудь дать мне совет? Данные:

1 Ответ

2 голосов
/ 26 мая 2019

Вам необходимо указать ссылку на таблицу данных, к которой вы применяете функцию

library(eeptools)  
library(data.table)

DT[, new := age_calc(DateBirth, DateUpdated, units="years", precise=T)]  

DT
#   Id  DateBirth DateUpdated Age  new
#1:  1 1990-01-01  2019-01-01  29 29.00
#2:  2 1980-05-06  2019-04-03  38 38.91
#3:  3 2000-09-07  2019-05-06  18 18.66

OR

age_calc(DT$DateBirth, DT$DateUpdated, units="years", precise=T)
#[1] 29.00 38.91 18.66
...