2017-10-24 5 views
0

Ich habe einen Datenrahmen mit vielen Tagen Daten und ich wan, um die maximale und minimale pro Tag zu erhalten, aber ich bekomme die gleiche df wie der Start zeigt eine Stunde Wert. Die ursprüngliche df sieht wie folgt aus:Max- und Min-Werte basierend auf Tagesdaten basierend auf Daten

    date temperature 
1: 2006-04-17 00:00:00 12.67833 
2: 2006-04-17 01:00:00 12.14133 
3: 2006-04-17 02:00:00 10.36833 
4: 2006-04-17 03:00:00 10.78600 
5: 2006-04-17 04:00:00 10.76967 
6: 2006-04-17 05:00:00 10.92467 

Und im diese bekommen:

    date  Max  Min 
1: 2006-04-17 00:00:00 12.67833 12.67833 
2: 2006-04-17 01:00:00 12.14133 12.14133 
3: 2006-04-17 02:00:00 10.36833 10.36833 
4: 2006-04-17 03:00:00 10.78600 10.78600 
5: 2006-04-17 04:00:00 10.76967 10.76967 
6: 2006-04-17 05:00:00 10.92467 10.92467 

Im den nächsten Code verwendet:

library(lubridate) 
datatemp<- read.csv("04_2006.csv", header = T) 
datatemp$date_time<-parse_date_time(datatemp$date_time,orders = "mdy HMS") 
temp_aveg<-aggregate(list(temperature = datatemp$temp), 
      list(date = cut(datatemp$date_time, "1 hour")), 
      mean) 
library(data.table) 
Tmaxmin<-setDT(temp_aveg)[, list(Max=max(temperature), Min=min(temperature)), by=list(date)] 

Ich weiß nicht, was im fehlt?

+0

Erhalten Sie die "durchschnittliche" pro Tag oder 1 Stunde Intervall? – akrun

+0

Der Mittelwert ist pro Stunde Intervall, danach möchte ich die Max und Min pro Tag basierend auf den 24 Punkten der stimulierten Daten vor – kriouz

Antwort

1

Sie gruppieren sowohl das Datum als auch die Uhrzeit und nicht nur das Datum. Eine Lösung mit lubridate und dplyr.

library(lubridate) 
library(dplyr)  

datatemp$date <- date(datatemp$date_time) 
datatemp <- na.omit(datatemp) 
output <- datatemp %>% 
    group_by(date) %>% 
    summarise(max_val = max(temperature), 
      min_val = min(temperature)) 
+0

finden Nun funktioniert dies teilweise, aber in einigen Teilen des Datensatzes habe ich NA-Werte und ich bekomme dies als Ergebnis, gibt es einen Weg, um NA-Werte zu vermeiden? – kriouz

+0

Siehe aktualisierte Antwort mit 'na.omit'. Dadurch werden alle Zeilen mit einem NA-Wert im Datumsfeld oder im Temperaturfeld entfernt. –

+0

Das funktioniert, danke – kriouz

Verwandte Themen