Asignar valor al grupo según la condición en la columna

Tengo un marco de datos similar al siguiente:

> df = data.frame(group = c(1,1,1,2,2,2,3,3,3), 
                 date = c(1,2,3,4,5,6,7,8,9),
                 value = c(3,4,3,4,5,6,6,4,9))
> df
  group date value
1     1    1     3
2     1    2     4
3     1    3     3
4     2    4     4
5     2    5     5
6     2    6     6
7     3    7     6
8     3    8     4
9     3    9     9

Quiero crear una nueva columna que contenga el valor de fecha por grupo que esté asociado con el valor "4" de la columna de valor.

El siguiente marco de datos muestra lo que espero lograr.

  group date value newValue
1     1    1     3        2
2     1    2     4        2
3     1    3     3        2
4     2    4     4        4
5     2    5     5        4
6     2    6     6        4
7     3    7     6        8
8     3    8     4        8
9     3    9     9        8

Como podemos ver, el grupo 1 tiene elnewValue "2" porque esa es la fecha asociada con el valor "4". Del mismo modo, el grupo dos tienenewValue 4 y el grupo tres tienenewValue 8)

Supongo que hay una manera fácil de hacer esto usandoave() o un rango dedplyr/data.table funciones, pero no he tenido éxito con mis muchos intentos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta