Aus stündlichen Werten einen Tagesmittelwert erstellen

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Printemps
Beiträge: 6
Registriert: Mi Jul 15, 2020 12:59 pm

Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag 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
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag von ruedi_br »

Das sieht schwer nach R-Studio aus. Was zeigt dann das Register Environment für Datentypen an?
VG
Ruedi
fortune(111)
Printemps
Beiträge: 6
Registriert: Mi Jul 15, 2020 12:59 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag von Printemps »

Ganz genau...ich arbeite mit RStudio. :)
Dateianhänge
Bildschirmfoto 2020-07-15 um 14.23.08.png
Ilonia
Beiträge: 30
Registriert: Mi Aug 09, 2017 3:50 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag 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.
Printemps
Beiträge: 6
Registriert: Mi Jul 15, 2020 12:59 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag von Printemps »

Super! Danke Ilonia...hat geklappt! :)
Gerd
Beiträge: 4
Registriert: Mi Nov 18, 2020 4:28 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag 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
Dateianhänge
Hilfe.PNG
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag von Athomas »

Ich würde das mit data.table machen.
Wenn ich passende Daten hätte könnte ich Dir sogar zeigen, wie!
Gerd
Beiträge: 4
Registriert: Mi Nov 18, 2020 4:28 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag 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.
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
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag 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]
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag 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
Antworten