Usando ifelse () para reemplazar NAs en un marco de datos haciendo referencia a otro marco de datos de diferente longitud

Ya revisé las siguientes dos publicaciones y creo quepodría Respondo mi pregunta, aunque me cuesta ver cómo:

1)Reemplazo condicional de valores en un data.frame 2)Crear una función para reemplazar NAs de un data.frame con valores de otro

Dicho esto, estoy tratando de reemplazar los NA en un marco de datos haciendo referencia a otro marco de datos de una longitud diferente (más corta) y obteniendo valores de reemplazo de la columna "B" donde coinciden los valores de la columna "A" en cada marco de datos .

Modifiqué los datos, a continuación, por simplicidad e ilustración, aunque el concepto es el mismo en los datos reales. Para su información, en el segundo marco de datos real, tampoco hay duplicados en la columna "A".

Aquí está el primer marco de datos (df1):

> df1
    B          C  A
1  NA 2012-10-01  0
2  NA 2012-10-01  5
3   4 2012-10-01 10
4  NA 2012-10-01 15
5  NA 2012-10-01 20
6  20 2012-10-01 25
7  NA 2012-10-01  0
8  NA 2012-10-01  5
9   5 2012-10-01 10
10  5 2012-10-01 15

> str(df1)
'data.frame':   10 obs. of  3 variables:
 $ B: num  NA NA 4 NA NA 20 NA NA 5 5
 $ C: Factor w/ 1 level "2012-10-01": 1 1 1 1 1 1 1 1 1 1
 $ A: num  0 5 10 15 20 25 0 5 10 15

Y el segundo marco de datos (df2).

> df2
   A         B
1  0 1.7169811
2  5 0.3396226
3 10 0.1320755
4 15 0.1509434
5 20 0.0754717
6 25 2.0943396

> str(df2)
'data.frame':   6 obs. of  2 variables:
 $ A: int  0 5 10 15 20 25
 $ B: num  1.717 0.3396 0.1321 0.1509 0.0755 ...

Creo que estoy bastante cerca con el siguiente código:

> ifelse(is.na(df1$B) == TRUE, df2$B[df2$A == df1$A], df1$B)
 [1]  1.7169811  0.3396226  4.0000000  0.1509434  0.0754717 20.0000000         NA         NA
 [9]  5.0000000  5.0000000
Warning message:
In df2$A == df1$A :
  longer object length is not a multiple of shorter object length

Obviamente, quiero que los elementos de salida 7 y 8 sean 1.7169811 y 0.3396226, en lugar de NA. . .

Gracias de antemano por cualquier ayuda y, una vez más, ¡gracias por su paciencia!

Respuestas a la pregunta(3)

Su respuesta a la pregunta