我有一个表,有三列:合同、日期和合同在该日期的价值。
我想把它加入到另一个有合同和日期的表中。关键是合同。但是,每个表的日期列很少一一对应。如何将日期列保留在后一个表中,并使用最接近该日期的日期的合同资金价值?
肮脏的解决方案是做一个笛卡尔积,然后用我拥有的其他日期过滤重要的日期。但是,这对我来说代价很高,因为第一个表中有4200万行,而第二个表中只有大约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?
暂无答案!
目前还没有任何答案,快来回答吧!