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

Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag von Athomas »

Ich habe auch zunächst fread mit den Setztungen von sep und dec benutzt, aber daraufhin ist RStudio abgestürzt...
Deshalb habe ich die sichere - aber umständliche - Variante gewählt!

Heute morgen funktionierte fread allerdings wie gewünscht, der Absturz hat offenbar andere Gründe gehabt!
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 8:55 pm 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]
Vielen, Vielen Dank Athomas!
Das hat super funktioniert. Ich hatte allerdings für jeden Tag immer noch 24 rows, die identisch waren. Damit meine ich das ich 24 Mal vom gleichen Tag die Mittelwerte zu den Spalten hatte. Als Ergänzung zu deinem Code habe ich mit dyplr die Redundanzen entsorgt:

Code: Alles auswählen

data <- mydata[!duplicated(mydata$nurDatum), ]
Ich habe noch eine Frage zu deinem Code, damit ich den komplett verstehe. Das ist dieser Teil: (substr(Time, 1, 10). Vielleicht findest du die Zeit mir das kurz zu erklären.

Vielen, vielen Dank nochmals und ich würde mich über eine kurze Erklärung sehr freuen!

Liebe Grüße
Zuletzt geändert von jogo am Fr Nov 20, 2020 3:08 pm, 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 »

Ich hatte allerdings für jeden Tag immer noch 24 rows, die identisch waren.
Ich sach mal: das kann nicht sein!
Als Ergänzung zu deinem Code habe ich mit dyplr die Redundanzen entsorgt:
Aaah, würg! tidyverse :o ! Und (s.o.) in meinen Augen gar nicht erforderlich...
Ich habe noch eine Frage zu deinem Code, damit ich den komplett verstehe. Das ist dieser Teil: substr(Time, 1, 10).
Damit nehme ich die ersten zehn Zeichen deines Timestamps (der ja zu dem Zeitpunkt als Zeichenkette vorliegt) und interpretiere ihn gemäß des folgenden format-Strings als Datum. Die Zeitangabe wird dadurch ingoriert, interessiert in diesem Zusammenhang aber auch nicht.
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: Fr Nov 20, 2020 3:38 pm
Ich hatte allerdings für jeden Tag immer noch 24 rows, die identisch waren.
Ich sach mal: das kann nicht sein!
Als Ergänzung zu deinem Code habe ich mit dyplr die Redundanzen entsorgt:
Aaah, würg! tidyverse :o ! Und (s.o.) in meinen Augen gar nicht erforderlich...
Ich habe noch eine Frage zu deinem Code, damit ich den komplett verstehe. Das ist dieser Teil: substr(Time, 1, 10).
Damit nehme ich die ersten zehn Zeichen deines Timestamps (der ja zu dem Zeitpunkt als Zeichenkette vorliegt) und interpretiere ihn gemäß des folgenden format-Strings als Datum. Die Zeitangabe wird dadurch ingoriert, interessiert in diesem Zusammenhang aber auch nicht.
Stimmt du hast Recht. In deinem Beispielskript gibt es keine Redundanzen. Bei meinem aber schon. Habe ich was falsch angegeben? Ich habe keine Unterschiede zwischen deinem Beispiel und meinem gefunden. Vielleicht übersehe ich aber auch etwas.

Code: Alles auswählen

Daten[  , .(sum_mm_hell=sum(mm_hell), max_mm_hell=max(mm_hell), min_mm_hell=min(mm_hell),  
                         mean_deg=mean(deg), max_deg=max(deg), min_deg=min(deg),
                         mean_m.s=mean(m.s), max_m.s=max(m.s), min_m.s=min(m.s),
                         mean_t=mean(t), max_t=max(t), min_t=min(t),
                         mean_Luftfeu=mean(Luftfeu), max_Luftfeu=(Luftfeu), min_Luftfeu=min(Luftfeu),
                         mean_Druck=mean(hPa), max_Druck=max(hPa), min_Druck=min(hPa),
                         sum_mmV=sum(mm_V), max_mmV=max(mm_V), min_mmV=min(mm_V),
                         sum_W.m=sum(W.m), max_W.m=max(W.m), min_W.m=min(W.m)),
                     by=nurDatum]
Zuletzt geändert von jogo am Mo Nov 23, 2020 8:24 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 »

Code: Alles auswählen

max_Luftfeu=(Luftfeu)
Was ist das :cry: ?
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Beitrag von Athomas »

Ich habe mir angewöhnt, unübersichtlichen Programmtext durch Einfügen von Leerzeichen bzw. Zeilenumbrüchen etwas zu strukturieren.

Das macht sich spätestens dann bezahlt, wenn man sich (oder sogar jemand anders) nach einer Weile das Programm nochmal anschaut.
Auch bei der Fehlersuche ist das hilfreich ;) - ich kann es nur empfehlen!

Code: Alles auswählen

Daten[ , .(sum_mm_hell  = sum(mm_hell),  max_mm_hell = max(mm_hell), min_mm_hell = min(mm_hell),
           mean_deg     = mean(deg),     max_deg     = max(deg),     min_deg     = min(deg),
           mean_m.s     = mean(m.s),     max_m.s     = max(m.s),     min_m.s     = min(m.s),
           mean_t       = mean(t),       max_t       = max(t),       min_t       = min(t),
           mean_Luftfeu = mean(Luftfeu), max_Luftfeu = (Luftfeu),    min_Luftfeu = min(Luftfeu),
           mean_Druck   = mean(hPa),     max_Druck   = max(hPa),     min_Druck   = min(hPa),
           sum_mmV      = sum(mm_V),     max_mmV     = max(mm_V),    min_mmV     = min(mm_V),
           sum_W.m      = sum(W.m),      max_W.m     = max(W.m),     min_W.m     = min(W.m)),
       by=nurDatum]
Antworten