Zusammenführung von Daten-frames ohne doppelte Zeilen
Ich würde gerne Zusammenführen von zwei Daten-frames, aber nicht wollen, um doppelte Zeilen, wenn es mehr als ein Spiel. Stattdessen würde ich mag, um die Summe der Beobachtungen an diesem Tag.
Aus ?merge: Die Zeilen in den beiden Daten-frames, die passen auf die angegebenen Spalten werden extrahiert und miteinander verbunden. Wenn es mehr als eine übereinstimmung, alle möglichen übereinstimmungen Beitrag eine Zeile, in jeder.
Hier einige Beispiel-code:
days <- as.data.frame(as.Date(c("2012-1-1", "2012-1-2", "2012-1-3", "2012-1-4")))
names(days) <- "Date"
obs.days <- as.data.frame(as.Date(c("2012-1-2", "2012-1-3", "2012-1-3")))
obs.days$count <- 1
colnames(obs.days) <- c("Date", "Count")
df <- merge(days, obs.days, by.x="Date", by.y="Date", all.x=TRUE)
Ich würde gerne die letzten Daten-frame, um nur eine Liste 2012-1-3 einmal mit einem count-Wert von 2.
- Ist
days
das gleiche wiez.days
? In diesem Fall wollen Sie die letzten Daten-frame zu haben 2012-1-{1,2,3,4} mit zählt, {1,2,3,1} ? (Hinweis:obs.days
hat 2 viele2012-1-3
unddays
1) - Ja, ich habe gerade bearbeiteten z.Tage zu Tage. Vielen Dank für fangen Sie. Ihre Antwort unter dem erwarteten Ausgang. Ich hatte versucht dies mit "Umformen", aber ich glaube, ich muss lernen plyr weiter. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, Sie Zusammenfügen und dann aggregiert werden (im wesentlichen führen Sie eine SUMME für jede eindeutige
Date
).Nun den Seriendruck, die Sie nutzen könnten
aggregate
:ABER ich würde empfehlen, Paket
plyr
, die ist genial! Insbesondere die Funktionddply
.Den Befehl
ddply(df,.(Date),FUN)
im wesentlichen:Also die Funktion habe ich erstellt eine Daten-frame, der eine Zeile mit Spalten
Date
undCount
ist, wobei die Summe von allen Punkten, die für das Datum.