Jahresdurchschnitte an verschiedenen Stationen

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

Moderatoren: EDi, jogo

Antworten
mantmach
Beiträge: 4
Registriert: Do Mai 02, 2019 3:46 pm

Jahresdurchschnitte an verschiedenen Stationen

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

Re: Jahresdurchschnitte an verschiedenen Stationen

Beitrag von jogo »

Hallo Klaus,

willkommen im Forum!
Kannst Du uns wenigstens die Struktur der Daten zeigen, also den Output von

Code: Alles auswählen

str(DeinDataframe)
:?:
Noch besser ist natürlich ein reproduzierbares Beispiel: viewtopic.php?f=20&t=11

... und wenn es einfach nur der zerhackte Dataframe sein soll:

Code: Alles auswählen

L <- split(DeinDataframe, DeinDataframe$Station)
und zusätzlich einen Dataframe mit den Ergebnissen zu allen Stationen, wäre das akzeptabel?

Gruß, Jörg
mantmach
Beiträge: 4
Registriert: Do Mai 02, 2019 3:46 pm

Re: Jahresdurchschnitte an verschiedenen Stationen

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

Re: Jahresdurchschnitte an verschiedenen Stationen

Beitrag 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

Code: Alles auswählen

str(all_GNIP_data_short)
in Deine nächste Nachricht kopieren?

Gruß, Jörg
mantmach
Beiträge: 4
Registriert: Do Mai 02, 2019 3:46 pm

Re: Jahresdurchschnitte an verschiedenen Stationen

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

Re: Jahresdurchschnitte an verschiedenen Stationen

Beitrag 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
mantmach
Beiträge: 4
Registriert: Do Mai 02, 2019 3:46 pm

Re: Jahresdurchschnitte an verschiedenen Stationen

Beitrag von mantmach »

Hallo Jörg,
super, vielen vielen Dank, der Code bringt mir genau das was ich wollte :D

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
Antworten