Seite 1 von 1
Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Do Mai 02, 2019 4:14 pm
von mantmach
Hallo Leute,
ich bin sowohl neu im Forum, als auch in dem Programm, also erstmal ein Hallo in die Runde

Ich fange gerade mit meiner Bachelorarbeit an und hantiere dort mit großen Datenmengen, weshalb mir mein Prof nahegelegt hat die Auswertungen mit R zu machen. An sich plotte ich hauptsächlich Messdaten gegeneinander, was auch ganz gut klappt, bei manchen sind die Plots aufgrund der großen Datenmenge aber relativ unübersichtlich, weshalb ich gerne nur die Jahresdurchschnitte auftragen würde.
An sich bestehen meinen Daten aus einem großen Dataframe in dem u.A. die Spalten "Station", "Date", "Breitengrad", "Längengrad" und "O18" liegen. Nun würde ich gerne eine Liste erstellen, in der für jede Station ein einzelner Dataframe liegt, der für jedes Jahr den Durchschnitt der gemessenen O18-Werte(sind 4-12 Messungen pro Jahr) angibt und gleichzeitig noch die Längen- und Breitengrade der Stationen enthält.
An der Stelle komme ich leider nicht wirklich weiter, ich würde mich also sehr über Hilfe freuen!
Mit freundlichen Grüßen
Klaus
Re: Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Do Mai 02, 2019 4:25 pm
von jogo
Hallo Klaus,
willkommen im Forum!
Kannst Du uns wenigstens die Struktur der Daten zeigen, also den Output von
Noch besser ist natürlich ein reproduzierbares Beispiel:
viewtopic.php?f=20&t=11
... und wenn es einfach nur der zerhackte Dataframe sein soll:
und zusätzlich einen Dataframe mit den Ergebnissen zu allen Stationen, wäre das akzeptabel?
Gruß, Jörg
Re: Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Fr Mai 03, 2019 11:23 am
von mantmach
Hallo Jörg,
danke für die Antwort und entschuldige, mir war noch nicht ganz klar wie ich das Problem hier am besten poste
Hier sind mal meine Daten auf die entscheidenden Spalten reduziert, wie man sieht wurden die Messungen auch nicht konstant durchgeführt.
Code: Alles auswählen
> head(all_GNIP_data_short, 5)
Site Latitude Longitude Altitude Date O18 H2 Precipitation
1 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-01-15 -15.0 -98.4 6
2 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-02-15 -10.4 -53.3 2
3 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-03-15 NA NA 67
4 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-04-15 NA NA 84
5 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-05-15 NA NA 25
und zusätzlich einen Dataframe mit den Ergebnissen zu allen Stationen, wäre das akzeptabel?
Ja klar, das hört sich fast am simplesten an.
Gruß, Klaus
Re: Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Fr Mai 03, 2019 12:53 pm
von jogo
Hallo Klaus,
mantmach hat geschrieben: Fr Mai 03, 2019 11:23 am
Hier sind mal meine Daten auf die entscheidenden Spalten reduziert, wie man sieht wurden die Messungen auch nicht konstant durchgeführt.
Code: Alles auswählen
> head(all_GNIP_data_short, 5)
Site Latitude Longitude Altitude Date O18 H2 Precipitation
1 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-01-15 -15.0 -98.4 6
2 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-02-15 -10.4 -53.3 2
3 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-03-15 NA NA 67
4 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-04-15 NA NA 84
5 KABUL (KARIZIMIR) 34.57 69.21333 1860 1962-05-15 NA NA 25
ja, das ist schon recht informativ. Jetzt muss aus dem Datum nur noch das Jahr bestimmt werden. Kannst Du bitte in gleicher Weise den output
von
in Deine nächste Nachricht kopieren?
Gruß, Jörg
Re: Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Fr Mai 03, 2019 1:34 pm
von mantmach
Das wäre folgendes
Code: Alles auswählen
> str(all_GNIP_data_short)
'data.frame': 74431 obs. of 8 variables:
$ Site : chr "KABUL (KARIZIMIR)" "KABUL (KARIZIMIR)" "KABUL (KARIZIMIR)" "KABUL (KARIZIMIR)" ...
$ Latitude : num 34.6 34.6 34.6 34.6 34.6 ...
$ Longitude : num 69.2 69.2 69.2 69.2 69.2 ...
$ Altitude : num 1860 1860 1860 1860 1860 1860 1860 1860 1860 1860 ...
$ Date : POSIXct, format: "1962-01-15" "1962-02-15" "1962-03-15" ...
$ O18 : num -15 -10.4 NA NA NA NA NA NA NA NA ...
$ H2 : num -98.4 -53.3 NA NA NA NA NA NA NA NA ...
$ Precipitation: num 6 2 67 84 25 7 NA NA NA 5 ...
Re: Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Fr Mai 03, 2019 1:53 pm
von jogo
Hallo Klaus,
schau man, ob dies funktioniert:
Code: Alles auswählen
aggregate(cbind(O18, H2, Precipitation) ~ Site + Latitude + Longitude + substr(Date, 1, 4), data=all_GNIP_data_short, FUN=mean)
https://stackoverflow.com/questions/350 ... ply-family
Mit
data.table könnte es so aussehen:
Code: Alles auswählen
library("data.table")
setDT(all_GNIP_data_short)
all_GNIP_data_short[, lapply(.SD, mean), by=.(Site, Latitude, Longitude, substr(Date, 1, 4)), .SDcols=c("O18", "H2", "Precipitation")]
Gruß, Jörg
Re: Jahresdurchschnitte an verschiedenen Stationen
Verfasst: Fr Mai 03, 2019 2:18 pm
von mantmach
Hallo Jörg,
super, vielen vielen Dank, der Code bringt mir genau das was ich wollte
Code: Alles auswählen
aggregate(cbind(O18, H2, Precipitation) ~ Site + Latitude + Longitude + substr(Date, 1, 4), data=all_GNIP_data_short, FUN=mean)
Die aggregate-Funktion war mir noch gar nicht bekannt.
Gruß, Klaus