Verwenden von ifelse () zum Ersetzen von NAs in einem Datenrahmen durch Verweisen auf einen anderen Datenrahmen unterschiedlicher Länge

Ich habe bereits die folgenden zwei Beiträge überprüft und denke, dass siekönnte Beantworte meine Frage, obwohl ich mich abmühe zu sehen, wie:

1)Bedingte Ersetzung von Werten in einem data.frame 2)Erstellen einer Funktion zum Ersetzen von NAs aus einem data.frame durch Werte aus einem anderen

Vor diesem Hintergrund versuche ich, NAs in einem Datenrahmen durch Verweisen auf einen anderen Datenrahmen mit einer anderen (kürzeren) Länge zu ersetzen und Ersetzungswerte aus Spalte "B" einzugeben, wobei die Werte für Spalte "A" in jedem Datenrahmen übereinstimmen .

Ich habe die folgenden Daten zur Vereinfachung und Veranschaulichung geändert, obwohl das Konzept in den tatsächlichen Daten identisch ist. Zu Ihrer Information, im realen zweiten Datenrahmen gibt es auch keine Duplikate in der Spalte "A".

Hier ist der erste Datenrahmen (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

Und der zweite Datenrahmen (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 ...

Ich denke, ich bin ziemlich nah mit dem folgenden Code:

> 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

Offensichtlich möchte ich, dass das 7. und 8. Ausgabeelement 1.7169811 und 0.3396226 sind und nicht NAs. . .

Vielen Dank im Voraus für jede Hilfe und nochmals vielen Dank für Ihre Geduld!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage