Spezifische Werte basierend auf einem anderen Datenrahmen ersetzen

eginnen wir zunächst mit DataFrame 1 (DF1):

DF1 <- data.frame(c("06/19/2016", "06/20/2016", "06/21/2016", "06/22/2016", 
                    "06/23/2016", "06/19/2016", "06/20/2016", "06/21/2016",
                    "06/22/2016", "06/23/2016"),
                  c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
                  c(149, 150, 151, 152, 155, 84, 83, 80, 81, 97),
                  c(101, 102, 104, 107, 99, 55, 55, 56, 57, 58),
                  c("MTL", "MTL", "MTL", "MTL", "MTL", "NY", "NY", 
                    "NY", "NY", "NY"))
colnames(DF1) <- c("date", "id", "sales", "cost", "city")

Ich habe auch DataFrame 2 (DF2):

DF2 <- data.frame(c("06/19/2016", "06/27/2016", "06/22/2016", "06/23/2016"),
                  c(1, 1, 2, 2),
                  c(9999, 8888, 777, 555),
                  c("LON", "LON", "QC", "QC"))
colnames(DF2) <- c("date", "id", "sales", "city")

Für jede Zeile in DF1 muss ich nachsehen, ob in DF2 eine Zeile mit demselben Datum und derselben ID vorhanden ist. Wenn ja, muss ich die Werte in DF1 durch die Werte in DF2 ersetzen.

DF2 enthält immer weniger Spalten als DF1. Wenn sich eine Spalte nicht in DF2 befindet, muss ich den ursprünglichen Wert beibehalten, der in DF1 für diese bestimmte Spalte vorhanden war.

Die endgültige Ausgabe würde so aussehen:

results <- data.frame(c("06/19/2016", "06/20/2016", "06/21/2016", "06/22/2016",
                        "06/23/2016", "06/19/2016", "06/20/2016", "06/21/2016",
                        "06/22/2016", "06/23/2016"),
                      c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
                      c(9999, 150, 151, 152, 155, 84, 83, 80, 777, 555),
                      c(101, 102, 104, 107, 99, 55, 55, 56, 57, 58),
                      c("LON", "MTL", "MTL", "MTL", "MTL", "NY", "NY", 
                        "NY", "QC", "QC"))
colnames(results) <- c("date", "id", "sales", "cost", "city")

Haben Sie Vorschläge?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage