Zeilen nach Monat in R summieren

7

Ich habe also einen Datenrahmen, der eine Datumsspalte, eine Stundenspalte und eine Reihe anderer numerischer Spalten enthält. Jede Zeile im Datenrahmen ist 1 Stunde von 1 Tag für ein ganzes Jahr.

Der Datenrahmen sieht so aus:

%Vor%

Die Stunden sind nicht in Ordnung, da dies aus einem anderen Datenrahmen besteht.

Ich möchte die Werte in den numerischen Spalten nach Monat und möglicherweise nach Tag summieren. Weiß jemand wie ich das machen kann?

    
user2787386 30.05.2015, 09:03
quelle

3 Antworten

7

Ich erstelle den Datensatz mit

%Vor%

Sie können die Summierung mit der Funktion aggregate :

durchführen %Vor%

Sehen Sie sich ?aggregate an, um die Funktion besser zu verstehen. Beginnend mit dem letzten Argument (weil das das Erklären einfacher macht) machen die Argumente folgendes:

  • FUN ist die Funktion, die für die Aggregation verwendet werden soll. Ich verwende sum , um die Werte zusammenzufassen, aber ich könnte auch mean , max oder eine Funktion sein, die du selbst geschrieben hast.
  • data wird verwendet, um den Datenrahmen anzugeben, den ich zusammenfassen möchte.
  • Das erste Argument sagt der Funktion, was genau ich aggregieren möchte. Auf der linken Seite von ~ gebe ich die Variablen an, die ich aggregieren möchte. Wenn es mehrere gibt, werden sie mit cbind kombiniert. Auf der rechten Seite befindet sich die Variable, nach der die Daten aufgeteilt werden sollen. Putting Date bedeutet, dass Aggregat die Variablen für jeden einzelnen Wert von Date zusammenfassen wird.

Für die Aggregation nach Monat habe ich die Funktion month aus dem Paket lubridate verwendet. Es tut was man erwartet: es gibt einen numerischen Wert zurück, der den Monat für ein bestimmtes Datum anzeigt. Vielleicht müssen Sie zuerst das Paket nach install.packages("lubridate") installieren.

Wenn Sie lubridate nicht verwenden möchten, können Sie stattdessen Folgendes tun:

%Vor%

Hier habe ich eine neue Spalte zu Daten hinzugefügt, die den Monat enthalten und dann durch diese Spalte aggregiert.

    
Stibu 30.05.2015, 09:13
quelle
7

Dies könnte eine andere Möglichkeit sein, dies mit data.table

zu tun %Vor%

oder mit dplyr

%Vor%     
Veerendra Gadekar 30.05.2015 10:37
quelle
4

Eine andere Basis-R-Lösung

%Vor%     
user20650 30.05.2015 14:29
quelle