У меня есть одна таблица с тремя столбцами: контракты, дата и стоимость контракта на эту дату.
Я хочу присоединить это к другой таблице, которая также имеет контракты и даты. Ключом будут контракты. Однако столбцы дат в каждой таблице очень редко выстраиваются один в один. Как я могу сохранить столбец даты в последней таблице и использовать стоимость фонда контракта на дату, ближайшую к этой дате?
Грязное решение - сделать декартово произведение, а затем отфильтровать важную дату по другим датам, которые у меня есть. Тем не менее, это будет дорогостоящим для меня, поскольку в первой таблице содержится 42 миллиона строк и во второй таблице только около 4000 строк. Поэтому я думал о реализации фильтрующего объединения с использованием дат во второй таблице
first <- tibble(contract = c(123124,1321412,312312),
date = c(2016-02-09, 2016-03-09, 2014-01-08),
value = c(20210, 34324, 31231))
second <- tibble(contract = c(123124, 1321412, 312312),
date = c(2015-03-09, 2014-03-09, 2014-01-08))
# if I join by contract key I think I could then filter doing something like this to get contract value at a time a month ahead or behind to get a reasonable approximation.
joined 'pipe'
filter((date.x + 30) < date.y, (date.x - 30) > date.y))
# but this would be inefficient. is there a better solution?