como encontrar datas que se sobrepõem de dois quadros de dados e subconjunto diferentes

Gostaria de usar uma data do quadro de dados A para encontrar datas dentro de 180 dias a partir dessa data para selecionar linhas no quadro de dados B, com IDs correspondentes.

por exemplo.

Dataframe A
ID  Date A
42  2012-07-21
42  2013-04-12
167 2009-04-27
167 2010-04-19
105 2010-12-16
105 2012-01-05


Dataframe B
ID Date B
12 2016-09-08
35 2008-02-02
42 2012-01-09
42 2013-03-13
167 2010-08-02
105 2010-11-26
105 2011-08-12
105 2011-11-11
105 2013-03-15
105 2013-09-13

Eu gostaria de criar um quadro de dados que forneça a combinação mais próxima de datas, além de garantir que haja no mínimo 3 Data B's na sequência. Portanto, a data A é a data de referência e a primeira data B precisa estar dentro de 180 +/- da data A, além de ter pelo menos duas datas subsequentes. Se houver mais duas combinações potenciais de data A e B, eu escolheria a combinação que preserva um mínimo de 3 datas Bs como a preferência.

ID  Date A        Date B
105 2012-01-05    2011-11-11
105 2012-01-05    2013-03-15
105 2012-01-05    2013-09-13

questionAnswers(1)

yourAnswerToTheQuestion