xxxxxxxxxx
library(data.table)
svcDT <- as.data.table(services)
evDT <- as.data.table(events)
evDT[svcDT[,sdate:=service_date],
on = .(animal_id == animal_id, event_date_lag <= sdate, event_date >= sdate)
][, event_date_lag := NULL ]
# animal_id event_date event_description service_date
# 1: 610710 2005-10-22 <NA> 2005-10-22
# 2: 610710 2006-12-03 PP 2006-12-03
# 3: 610710 2006-12-27 PP 2006-12-27
# 4: 610710 2007-12-02 PN 2007-12-02
# 5: 610710 2008-01-17 PP 2008-01-17
# 6: 610710 2008-03-04 PP 2008-03-04