Aus stündlichen Werten einen Tagesmittelwert erstellen
Aus stündlichen Werten einen Tagesmittelwert erstellen
Hallo!
Ich habe einen meteorologischen Datensatz, welcher für den Zeitraum 01.01.2002-31.12.2014 Stundenwerte für die Temperatur, die relative Feuchte, die Stationsnummer und den Messzeitpunkt enthält. Ich würde nun gerne einen neuen Datensatz erstellen, der für jeden Tag einen Mittelwert enthält. Ich hab keine Ahnung, wie ich das mit dem Datum mach...also wie sage ich R "nimm alle Werte für Tag X und bilde mir daraus einen Mittelwert, anschließend mach das für alle anderen Tage auch". Kann mir jemand weiterhelfen?
Ich habe einen meteorologischen Datensatz, welcher für den Zeitraum 01.01.2002-31.12.2014 Stundenwerte für die Temperatur, die relative Feuchte, die Stationsnummer und den Messzeitpunkt enthält. Ich würde nun gerne einen neuen Datensatz erstellen, der für jeden Tag einen Mittelwert enthält. Ich hab keine Ahnung, wie ich das mit dem Datum mach...also wie sage ich R "nimm alle Werte für Tag X und bilde mir daraus einen Mittelwert, anschließend mach das für alle anderen Tage auch". Kann mir jemand weiterhelfen?
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Das sieht schwer nach R-Studio aus. Was zeigt dann das Register Environment für Datentypen an?
VG
Ruedi
VG
Ruedi
fortune(111)
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Ganz genau...ich arbeite mit RStudio.
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
hier ein Lösungsvorschlag mit dplyr:
Ich hoffe ich konnte weiterhelfen.
Code: Alles auswählen
library(dplyr)
neuer_df<-data_dahlem%>% # nehme den Datensatz
mutate(date= format(MESS_DATUM, "%Y-%m-%d")) %>% # Neuformatierung eines Datums anhand des Messzeitpunktes
group_by(date, STATIONS_ID) %>% # hier gruppierst du nach dem Datum und deiner Stations-ID
summarise(TT_mean=round(mean(TT_TU,na.rm = TRUE),digits = 2), # bilde den Mittelwert für TT und runde auf 2 Stellen
RF_mean=round(mean(RF_TU,na.rm = TRUE),digits = 2) # bilde den Mittelwert für RF und runde auf 2 Stellen
Ich hoffe ich konnte weiterhelfen.
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Super! Danke Ilonia...hat geklappt!
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Hallo Ilonia,Ilonia hat geschrieben: ↑Mi Jul 15, 2020 4:21 pm hier ein Lösungsvorschlag mit dplyr:Code: Alles auswählen
library(dplyr) neuer_df<-data_dahlem%>% # nehme den Datensatz mutate(date= format(MESS_DATUM, "%Y-%m-%d")) %>% # Neuformatierung eines Datums anhand des Messzeitpunktes group_by(date, STATIONS_ID) %>% # hier gruppierst du nach dem Datum und deiner Stations-ID summarise(TT_mean=round(mean(TT_TU,na.rm = TRUE),digits = 2), # bilde den Mittelwert für TT und runde auf 2 Stellen RF_mean=round(mean(RF_TU,na.rm = TRUE),digits = 2) # bilde den Mittelwert für RF und runde auf 2 Stellen
Ich hoffe ich konnte weiterhelfen.
ich habe genau das selbe Problem nur funktioniert deine Lösung bei mir nicht. Es werden zwar Werte berechnet nur sind diese falsch. Was genau berechnet wird konnte ich nicht feststellen, sodass ich den Fehler nicht gefunden habe. Meine Datenstruktur sieht so aus:
Ich würde mich echt freuen, wenn du oder jemand anderes mir auch weiterhelfen könnte.
Liebe Grüße
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Ich würde das mit data.table machen.
Wenn ich passende Daten hätte könnte ich Dir sogar zeigen, wie!
Wenn ich passende Daten hätte könnte ich Dir sogar zeigen, wie!
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Hallo Athomas,
Hier sind 2 Tage. Passt dir das so? und vielen Dank schonmal im Vorraus!
Code: Alles auswählen
Time;mm_hell;deg;m/s;t;Luftfeu;hPa;mm_V;W/m
02.05.2016 00:00;0,5;232;4,3;10,8;44,0;1000,6;0;35,70
02.05.2016 01:00;0,5;233;4,3;11,9;45,7;1000,3;0;92,03
02.05.2016 02:00;0,5;229;3,3;11,9;48,6;1000,0;0;88,85
02.05.2016 03:00;0,5;235;5,3;12,6;48,0;999,8;0;273,39
02.05.2016 04:00;0,5;243;4,5;14,3;45,3;999,1;0;194,21
02.05.2016 05:00;0,5;273;4,9;13,2;54,2;998,9;0;184,23
02.05.2016 06:00;0,5;238;2,9;12,1;66,7;998,6;0,15;174,76
02.05.2016 07:00;0,5;234;3,9;11,9;67,6;997,9;0,35;130,67
02.05.2016 08:00;0,5;241;7,4;14,7;50,0;997,0;0,35;327,22
02.05.2016 09:00;0,5;246;6,8;15,7;42,1;996,5;0,35;117,52
02.05.2016 10:00;0,5;259;5,8;16,2;40,9;995,9;0,35;57,96
02.05.2016 11:00;0,5;301;2,9;15,1;46,4;996,2;0,35;17,70
02.05.2016 12:00;0,5;272;7,7;14,3;53,5;996,5;0,35;0,59
02.05.2016 13:00;0,5;280;4,3;11,9;71,3;997,0;0,44;-5,88
02.05.2016 14:00;0,5;162;0,2;10,2;82,9;996,4;0,49;-2,23
02.05.2016 15:00;0,6;230;1,4;10,5;78,3;996,4;0,5;-3,48
02.05.2016 16:00;0,6;284;1,7;10,6;76,3;996,2;0,52;-4,44
02.05.2016 17:00;0,6;274;2,6;9,8;83,1;996,1;0,52;-3,03
02.05.2016 18:00;0,7;285;1,4;9,1;89,2;995,9;0,52;-1,63
02.05.2016 19:00;0,8;313;0,8;9,0;90,5;995,6;0,54;-1,09
02.05.2016 20:00;1,1;346;1,6;8,7;89,8;995,5;0,63;-1,19
02.05.2016 21:00;1,1;10;2,4;8,3;89,5;995,3;0,63;-1,33
02.05.2016 22:00;1,1;52;1,6;7,8;91,2;995,2;0,63;3,73
02.05.2016 23:00;1,2;52;1,4;7,7;92,7;995,3;0,66;26,38
03.05.2016 00:00;1,3;22;2,2;7,9;88,9;995,2;0,66;35,92
03.05.2016 01:00;1,3;48;2,9;8,0;88,4;995,0;0,67;78,29
03.05.2016 03:00;1,3;54;2,8;8,4;84,1;994,5;0,79;117,81
03.05.2016 04:00;1,8;60;3,3;8,0;87,1;994,0;1,09;95,54
03.05.2016 05:00;2,5;58;2,7;7,8;88,8;993,6;1,58;51,41
03.05.2016 06:00;2,7;36;5,1;7,2;89,1;993,4;1,68;44,73
03.05.2016 07:00;2,9;51;4,1;6,9;88,7;993,1;2,12;33,61
03.05.2016 08:00;3,4;55;6,0;6,5;90,3;992,2;2,6;43,82
03.05.2016 09:00;3,5;43;5,9;6,5;87,3;991,9;2,66;33,05
03.05.2016 10:00;3,9;39;4,8;6,0;89,4;992,2;3,07;21,06
03.05.2016 11:00;4,9;45;4,5;5,8;91,3;992,3;4,4;7,36
03.05.2016 12:00;6,6;35;3,2;5,5;91,7;992,5;7,39;4,12
03.05.2016 13:00;8,4;348;2,3;5,5;92,7;993,3;9,36;-0,01
03.05.2016 14:00;9,5;0;3,6;5,5;92,6;993,2;10,41;-0,16
03.05.2016 15:00;9,6;350;1,3;5,5;92,0;993,2;10,42;-0,24
03.05.2016 16:00;9,6;312;1,9;5,4;92,6;993,5;10,44;-0,69
03.05.2016 17:00;9,6;295;1,8;5,3;92,0;993,8;10,44;-0,48
03.05.2016 18:00;9,6;265;1,6;5,5;92,5;994,0;10,44;-0,22
03.05.2016 19:00;9,6;249;1,4;5,4;91,9;993,9;10,44;-0,93
03.05.2016 20:00;9,6;262;3,0;5,6;91,3;994,3;10,44;-0,38
03.05.2016 21:00;9,6;276;2,8;4,2;91,5;995,1;10,44;-2,61
03.05.2016 22:00;9,6;314;2,1;3,8;87,8;996,2;10,44;59,71
03.05.2016 23:00;9,6;314;3,5;4,5;85,2;997,6;10,44;201,11
Zuletzt geändert von jogo am Fr Nov 20, 2020 8:33 am, insgesamt 1-mal geändert.
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Grund: Formatierung verbessert. http://forum.r-statistik.de/viewtopic.php?f=20&t=29
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Du kannst die Daten als Textdatei (.txt, .csv) anhängen, das würde es etwas bequemer machen.
Den Pfad musst Du natürlich noch auf Deine Situation anpassen:
Den Pfad musst Du natürlich noch auf Deine Situation anpassen:
Code: Alles auswählen
library(data.table)
Daten <- data.table(read.table("P:/R/aggregieren/Basis.txt", header=TRUE, sep=";", dec=",", stringsAsFactors = FALSE))
Daten[ , nurDatum:=as.Date(substr(Time, 1, 10), format="%d.%m.%Y")]
Daten[ , .(meanPress=mean(hPa), sum_mm_hell=sum(mm_hell)), by=nurDatum]
Re: Aus stündlichen Werten einen Tagesmittelwert erstellen
Auch dies geht beim Einlesen:
Gruß, Jörg
Code: Alles auswählen
Daten <- fread(sep=";", dec=",",
"Time;mm_hell;deg;m/s;t;Luftfeu;hPa;mm_V;W/m
02.05.2016 00:00;0,5;232;4,3;10,8;44,0;1000,6;0;35,70
02.05.2016 01:00;0,5;233;4,3;11,9;45,7;1000,3;0;92,03
..."