Seite 1 von 2

Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Mi Jul 15, 2020 1:22 pm
von Printemps
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?
Bildschirmfoto 2020-07-15 um 13.18.31.png

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Mi Jul 15, 2020 2:08 pm
von ruedi_br
Das sieht schwer nach R-Studio aus. Was zeigt dann das Register Environment für Datentypen an?
VG
Ruedi

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Mi Jul 15, 2020 2:25 pm
von Printemps
Ganz genau...ich arbeite mit RStudio. :)

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Mi Jul 15, 2020 4:21 pm
von Ilonia
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.

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Mi Jul 15, 2020 9:18 pm
von Printemps
Super! Danke Ilonia...hat geklappt! :)

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Do Nov 19, 2020 1:27 pm
von Gerd
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.
Hallo Ilonia,

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

Verfasst: Do Nov 19, 2020 2:33 pm
von Athomas
Ich würde das mit data.table machen.
Wenn ich passende Daten hätte könnte ich Dir sogar zeigen, wie!

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Do Nov 19, 2020 8:30 pm
von Gerd
Athomas hat geschrieben: Do Nov 19, 2020 2:33 pm Ich würde das mit data.table machen.
Wenn ich passende Daten hätte könnte ich Dir sogar zeigen, wie!
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
Hier sind 2 Tage. Passt dir das so? und vielen Dank schonmal im Vorraus! Wenn du mir das mit einer Variable zeigen könntest wäre das grandios! Ich benötige allerdings nicht für jede Variable den Mittelwert. Zum Beispiel benötige ich für mm_hell die Tagessumme.

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Do Nov 19, 2020 8:55 pm
von Athomas
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:

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

Verfasst: Fr Nov 20, 2020 8:41 am
von jogo
Auch dies geht beim Einlesen:

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
..."
Gruß, Jörg