2017-06-17 7 views
0

Ich habe Echtzeitdaten über NO2, die mit einem NO2-Sensor gesammelt wurden. Die Daten haben 48-Stunden-NO2 pro Sekunde protokolliert. NO2 wurde 48 Stunden lang in verschiedenen Häusern gemessen. Es gibt über 50.000 Zeilen und drei Spalten. Here a snapshot.Berechnung der angegebenen stündlichen Mittelwerte in R

Homes Time  ppb 
Home 1 12:00 AM 6 
Home 1 12:01 AM 6 
Home 1 12:02 AM 7 
Home 1 12:03 AM 6 
Home 1 12:04 AM 7 
Home 1 12:05 AM 9 
Home 1 12:06 AM 8 
Home 2 12:00 AM 2 
Home 2 12:01 AM 3 
Home 2 12:02 AM 4 
Home 2 12:03 AM 1 
Home 2 12:04 AM 6 
Home 2 12:05 AM 4 
Home 2 12:06 AM 8 

Ich möchte einen neuen Datensatz zu erstellen, die stündlich haben wird (00.00, 01.00, etc.) beträgt von NO2 statt pro Sekunde. Ich möchte 1 Uhr zum Durchschnitt von 12:01 - 1:00 Uhr machen und mit diesem Trend fortfahren.

Ich habe eine Reihe von Methoden ausprobiert, aber ich muss noch herausfinden, wie das geht. Die Funktionen group_by und summarize gaben mir den Durchschnitt der Zeit (z. B. 1 Uhr morgens, 2 Uhr morgens) im gesamten Datensatz, aber ich möchte stündliche Mittelwerte nach den Hausnummern.

Ich habe versucht, mit einer Schleife, die nicht funktioniert hat:

ist
Avg = data.frame(Sensor_analysis)  
head(Avg)  
Hourly = rep(0, 48)  
for (i in 1:48) { 
    Hourly[i] = mean(Avg$ppb[60*(i-1)+1:60*i]) 
} 
Hourly 
+0

Sie können arbeiten konvertieren kann benutze 'cut' ich denke. Schauen Sie auch [dort] (https://stackoverflow.com/questions/17389533/aggregate-values-of-15-minute-step-to-values-of-hurly-steps) – user2100721

+0

können Sie eine Kopie und Pasteable-Version bereitstellen Ihrer Daten? Führen Sie einfach 'dput (head (Sensor_analysis))' '. – RoyalTS

+0

@RoyalTS Ich lief dput (head (Sensor_analysis)) in R, was mache ich als nächstes, um es auf dieser Plattform kopieren und einfügen? – Ophir

Antwort

1

Ihre Frage wirklich weit vom Ideal eines vollständig reproduzierbar Beispiel weit entfernt, aber dies für die Größe anprobieren:

library(dplyr) 
library(lubridate) 

Sensor_analysis %>% 
    mutate(hour = ceiling_date(Time, 'hour')) %>% 
    group_by(Homes, hour) %>% 
    summarize(hourly = mean(ppb)) -> Hourly 

Je nachdem, wie Ihre Time Variable gespeichert wird Sie zunächst entweder an POSIXct oder hms für diese

+0

Danke @RoyalTS es hat funktioniert. Ich möchte wissen, wie die Stundenmittelwerte berechnet werden. Nachdem ich den Code ausgeführt habe, sehe ich, dass es stündliche (z. B. 1:00, 2:00) Durchschnittswerte gab. Ist das die mittlere Konzentration für 1: 00-1: 59? Ich habe die Ergebnisse mit denen verglichen, die ich manuell in Excel gemacht habe, aber das war anders. Eine weitere Frage: Ich möchte, dass andere Variablen in dem neuen Datensatz enthalten sind, den wir erstellt haben. Der ursprüngliche Datensatz enthält 10 Spalten (Haushalte, Zeit, ppb, Wärme, Belüftung, Koch, TRAP, Dst_Hwy, Dst_Int, Lkw). – Ophir

Verwandte Themen