Я хочу соединить две таблицы A & B по идентификатору и найти в B самую последнюю дату, предшествующую A [date].
После некоторого поиска кажется, что fuzzyjoin
позволяет присоединиться кдиапазоны дат:
library(fuzzyjoin)
fuzzy_left_join(A, B,
by = c("ID" = "ID",
"date" = "date"),
match_fun = list("==","<"))
Проблема в том, что при этом будет возвращено много записей (если они существуют в B), когда мне просто нужны самые последние.
Есть идеи о том, как поступить?
РЕДАКТИРОВАТЬ:
A <- data.frame(ID=c(1,2,3),
date = c('2019-04-03','2019-05-13','2019-05-27'))
B <- data.frame(ID=c(1,1,2,3,4),
date = c('2018-01-01','2019-01-01','2019-02-20','2019-06-01','2019-01-01'),
value = c(1,1.5,1.2,3.7,4))
> A
ID date
1 1 2019-04-03
2 2 2019-05-13
3 3 2019-05-27
> B
ID date value
1 1 2018-01-01 1.0
2 1 2019-01-01 1.5
3 2 2019-02-20 1.2
4 3 2019-06-01 3.7
5 4 2019-01-01 4.0
Ожидаемый результат:
ID date value
1 1 2019-04-03 1.5
2 2 2019-05-13 1.2
3 3 2019-05-27 NA