Cómo encontrar fechas que se superponen a partir de dos marcos de datos y subconjuntos diferentes

Me gustaría usar una fecha del marco de datos A para encontrar cualquier fecha dentro de los 180 días de esta fecha para seleccionar filas en el marco de datos B, con ID coincidentes.

p.ej.

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

Me gustaría crear un marco de datos que proporcione la combinación más cercana de fechas, así como asegurar que haya un mínimo de 3 fechas B en la secuencia. Por lo tanto, la fecha A es la fecha de referencia, y la primera fecha B debe estar dentro de 180 +/- de la fecha A, así como tener al menos dos fechas posteriores. Si hay dos o más combinaciones potenciales de fecha A y B, elegiría la combinación que conserve un mínimo de 3 fechas B como preferencia.

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta