Вот возможный подход к неравному соединению с использованием пакета data.table . Я опущу это, если OP только ищет подход tidyverse
DT1[, c("start", "end") := .(DateTime - 60*10, DateTime + 60*10)]
DT2[DT1, on=.(LicensePlate=LicensePlate, DateTime>=start, DateTime<=end),
.(LicensePlate, i.DateTime, x.DateTime)]
выход:
LicensePlate i.DateTime x.DateTime
1: XLP1234P 2018-06-09 02:52:40 2018-06-09 02:55:40
2: XLP2345P 2018-07-18 11:22:46 2018-07-18 11:30:46
3: XLP3456P 2018-07-18 11:22:46 <NA>
4: XLP4567P 2018-07-18 11:22:46 <NA>
5: XLP5678P 2018-07-18 11:22:46 <NA>
6: XLP6789P 2018-07-18 11:22:46 <NA>
данные:
library(data.table)
DT1 <- fread("LicensePlate,DateTime
XLP1234P,09-JUN-18 02.52.40.144000000 PM
XLP2345P,18-JUL-18 11.22.46.855000000 AM
XLP3456P,18-JUL-18 11.22.46.856000000 AM
XLP4567P,18-JUL-18 11.22.46.856000000 AM
XLP5678P,18-JUL-18 11.22.46.857000000 AM
XLP6789P,18-JUL-18 11.22.46.858000000 AM")
DT2 <- fread("LicensePlate,DateTime
XLP1234P,09-JUN-18 02.55.40.144000000 PM
XLP2345P,18-JUL-18 11.30.46.855000000 AM")
DT1[, DateTime := as.POSIXct(DateTime, format="%d-%b-%y %H.%M.%OS")]
DT2[, DateTime := as.POSIXct(DateTime, format="%d-%b-%y %H.%M.%OS")]