Seite 2 von 2

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Fr Nov 20, 2020 9:08 am
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!

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Fr Nov 20, 2020 3:06 pm
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

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Fr Nov 20, 2020 3:38 pm
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.

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Fr Nov 20, 2020 7:22 pm
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]

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Fr Nov 20, 2020 11:59 pm
von Athomas

Code: Alles auswählen

max_Luftfeu=(Luftfeu)
Was ist das :cry: ?

Re: Aus stündlichen Werten einen Tagesmittelwert erstellen

Verfasst: Sa Nov 21, 2020 9:57 am
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]