2016-08-12 5 views
-1

Hallo und vielen Dank im Voraus tun,Gruppendaten durch Zeit den Mittelwert in den Rest der Spalten

ich zu einer Gruppe nach dem Datum dieses Datensatzes die Zeilen benötigen würde ich mit importiert haben: read.table. Ein Problem hinzuzufügen, ist das Format aller Variablen ist factor:

Date;  Time;  Global_active_power; Global_reactive_power; Voltage 
16/12/2006; 00:00:00; 4.216;    0.418;     234.840 
16/12/2006; 00:01:00; 5.360;    0.436;     233.630 
16/12/2006; 00:02:00; 5.360;    0.436;     233.630 
..... 
17/12/2006; 00:00:00; 1.044;    0.152;     242.730 

Statt Gruppe von Datum Ich brauche die mean jeder Spalte berechnen alle Datensätze während eines Tages zusammenfassen in nur einer Zeile wie folgt aus:

Nachdem ich Datum getan habe, lösche ich die Zeitspalten, da ich nur die mean der Maße von jedem Tag während einer Zeitperiode benötige.

Danke nochmal!

+1

Bitte formatieren Sie Ihre Daten – akrun

Antwort

0

Sie können dies tun, um die dplyr Paket mit der Annahme, dass die Daten in einem Datenrahmen ist df:

library(`dplyr`) 
result <- df %>% group_by(Date) %>%     ## 1. 
       select(-Time) %>%     ## 2. 
       mutate_each(funs(as.numeric)) %>% ## 3. 
       summarise_each(funs(mean))   ## 4. 

In der Tat spiegeln die Befehle, was Sie erreichen wollen.

Hinweise:

  1. Erste group_by die Date Säule, so dass die nachfolgenden Mittel in Bezug auf Werte über alle Zeiten für das Datum berechnet wird.
  2. Dann select alle anderen Spalten außer für die Time Spalte mit select(-Time).
  3. Wie Sie darauf hingewiesen haben, müssen die Spalten der zu mittelnden Daten numerisch sein, anstatt der Faktoren. Konvertieren Sie sie also nach Bedarf in Zahlen. Dies verwendet mutate_each, um die Funktion as.numeric auf jede ausgewählte Spalte anzuwenden.
  4. Schließlich summarise_each dieser ausgewählten Spalten, die die Funktion mean auf jede Spalte anwenden.

die Daten mit Ihnen zur Verfügung gestellten:

print(result) 
### A tibble: 2 x 4 
##  Date Global_active_power Global_reactive_power Voltage 
##  <chr>    <dbl>     <dbl> <dbl> 
##1 16/12/2006   4.978667     0.430 234.0333 
##2 17/12/2006   1.044000     0.152 242.7300 

Hoffnung, das hilft.

Verwandte Themen