Summen-Zeilen, indem Sie Monat für Monat in R
Also ich habe einen Daten-frame, der hat eine Spalte Datum, eine Stunde, Spalte und eine Reihe von anderen numerischen Spalten. Jede Zeile in der Daten-frame ist 1 Stunde 1 Tag für ein ganzes Jahr.
Den Daten-frame sieht wie folgt aus:
Date Hour Melbourne Southern Flagstaff
1 2009-05-01 0 0 5 17
2 2009-05-01 2 0 2 1
3 2009-05-01 1 0 11 0
4 2009-05-01 3 0 3 8
5 2009-05-01 4 0 1 0
6 2009-05-01 5 0 49 79
7 2009-05-01 6 0 425 610
Die Stunden sind nicht in Ordnung, denn dies ist subsetted von einem anderen Datenrahmen.
Möchte ich die Summe der Werte in den numerischen Spalten Monat und ggf. von Tag zu Tag. Weiß jemand, wie ich dies tun kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstelle ich den Datensatz, indem Sie die
Können Sie die Summe mit der Funktion
aggregate
:Blick auf
?aggregate
zu verstehen, die besser funktionieren. Beginnend mit dem letzten argument (denn das macht das erklären einfacher) die Argumente haben folgende:FUN
ist die Funktion, die verwendet werden sollte für die aggregation. Ich benutzesum
um die Summe der Werte, aber ich könnte auchmean
,max
oder einige Funktion, die Sie selber geschrieben haben.data
wird verwendet, um anzuzeigen, dass Daten-Frames, die ich will, zu aggregieren.~
ich zeigen die Variablen, die ich will, zu aggregieren. Wenn es mehr als eins ist, sind Sie zusammen mitcbind
. Auf der rechten Seite ist die variable, die die Daten verteilt werden sollten. SetzenDate
bedeutet, dass Aggregat wird die Summe der Variablen für jeden einzelnen Wert vonDate
.Für die aggregation von Monats -, habe ich die Funktion
month
aus dem Paketlubridate
. Es tut was man erwartet: es gibt einen numerischen Wert zurück, der angibt, des Monats für ein bestimmtes Datum. Vielleicht müssen Sie zunächst installieren Sie das Paket durchinstall.packages("lubridate")
.Wenn Sie lieber nicht verwenden lubridate, können Sie das folgende tun, statt:
Hier habe ich noch eine neue Spalte auf Daten, die enthält den Monat und dann aggregiert nach dieser Spalte.
install.packages("lubridate")
Dies könnte ein weiterer Weg, dies zu tun mit
data.table
oder mit
dplyr
setDT(data)[, lapply(.SD, sum), by=Date]
Anderen base-R-Lösung
Ich würde verwenden dplyr::zusammenfassen und group_by, mit einer Summe für jeden Ihrer numerischen Spalten: