Seite 1 von 3
Monatsmittel
Verfasst: Mo Jun 19, 2017 10:20 am
von saskiasal47
Hallo ihr Lieben,
ich komme an einer Stelle einer Aufgabe nicht weiter und wäre super dankbar, wenn mir jemand helfen würde

Ich habe in einer Tabelle mit mehreren meteorologische Daten (Niederschlag, mittlere Lufttemperatur, max. Lufttemperatur usw.) für ein ganzes Jahr( es wurde jeden Tag nur ein Mal gemessen). Nun soll ich für die mittlere Lufttemperatur, für alle 12 Monate, das Monatsmittel berechnen. Als Hinweis wurde mir gegeben, dass es hilfreich sei, die Tageswerte der einzelnen Monate in eine 2-dimensionale Matrixstruktur (Zeilen = Tage, Spalten = Monate) aufzuteilen.
Aber wie mache ich das am besten? Mit Hilfe des matrix-Befehls? und wie berechne ich die Monatsmittel ohne alle Tage einzutippen?
Ich bedanke mir schon Mal für eure Hilfe
Liebe Grüße
Saskia

Re: Monatsmittel
Verfasst: Mo Jun 19, 2017 11:47 am
von jogo
Hallo Saskia,
bitte zeig doch mal, wie die Daten aussehen:
... den output dann in Deine nächste Nachricht kopieren.
Gruß, Jörg
Re: Monatsmittel
Verfasst: Mo Jun 19, 2017 1:21 pm
von bigben
saskiasal47 hat geschrieben: Mo Jun 19, 2017 10:20 am
Als Hinweis wurde mir gegeben, dass es hilfreich sei, ...
Hallo Saskia,
das klingt schwer nach Hausaufgabe. Hausaufgaben haben hier im Forum zweierlei Besonderheiten.
1. erwarten wir, dass Du schreibst, was Du Dir schon selbst gedacht und was Du selbst versucht hast, bevor Du von uns einen Hinweis in die richtige Richtung bekommst.
2. gibt es oft mehrere Wege, solche Probleme zu lösen. Dein Lehrer hat diese aber nicht alle schon unterrichtet. Es hilft also, wenn Du ein wenig dazu schreibst, was Du schon weißt und kannst. Das vorliegende Problem können wir wahrscheinlich über tapply lösen, wir können das über eine for-Schleife lösen, wir können das mit which() lösen und wir können das als data.table lösen oder mit dplyr.
Anhand Deines eigenen Ansatzes oder durch eine Schilderung des zuletzt durchgenommenen Stoffs ist es vielleicht möglich die Lösung zu suchen, die Dein Lehrer im Sinn hatte.
LG,
Bernhard
Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 10:42 am
von saskiasal47
m k M
1 Monat Tag LUFTTEMPERATUR
2 01 01 -2
3 01 02 -2
4 01 03 -4.1
5 01 04 -3.6
6 01 05 -4.8
7 01 06 -4.7
8 01 07 -3.2
9 01 08 -2.3
so sehen die Daten in etwa aus, nur das sie eben über 365 Tage gehen, bei Monat kommt demenetprechen iwann 2,3 usw.
dort waren eigentlich noch mehr Spalten, aber habe jetzt mit data.frame mir nur die wichtigen Daten extrahiert,
m<- Daten[,2]
k<-Daten[,3]
M<-Daten[,4]
d<-data.frame(m,k,M)
wäre das so korrekt?
jetzt habe ich versucht, das Monatsmittel für jeden Monat zu bilden, daran bin ich aber gescheitert. Das würde ich mit einer for Schleife lösen wollen.
nach der Schleife habe ich den Befehel eingeben: Daten.Januar<-subset(d,d[,3]==1) , das funktioniert aber leider nicht:(
Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 10:57 am
von jogo
Hallo Saskia,
kannst Du bitte den Output von
liefern?
Gruß, Jörg
Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 11:53 am
von bigben
Ich glaube, Jörg meint
Die führenden Nullen bei den Tages- und Monatsbezeichnungen sind verdächtig. Könnte gut sein, dass da Texte statt Zahlen stehen.
LG,
Bernhard
Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 12:55 pm
von bigben
Nein! Nachdem Du
gemacht hast, muss es bei Dir einen Dataframe mit dem Namen d geben. Du sollst nun
eintippen, auf Return drücken und die Antwort von R auf dieses Kommando hierher kopieren, möglichst in code-Tags.
LG,
Bernhard
Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 1:39 pm
von saskiasal47
das kommt bei mir raus, wenn ich str(d) in in die Konsole tippe:
Code: Alles auswählen
data.frame': 366 obs. of 3 variables:
$ m: Factor w/ 13 levels "01","02","03",..: 13 1 1 1 1 1 1 1 1 1 ...
$ k: Factor w/ 32 levels "01","02","03",..: 32 1 2 3 4 5 6 7 8 9 ...
$ M: Factor w/ 190 levels "-0.1","-0.2",..: 190 15 15 33 28 39 38 24 17 7 ...
sorry, wenn ich mich so doof anstelle

Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 1:43 pm
von saskiasal47
das kommt raus ohne data.frame
Code: Alles auswählen
> str(Daten)
'data.frame': 366 obs. of 8 variables:
$ V1: Factor w/ 2 levels "2015","Jahr": 2 1 1 1 1 1 1 1 1 1 ...
$ V2: Factor w/ 13 levels "01","02","03",..: 13 1 1 1 1 1 1 1 1 1 ...
$ V3: Factor w/ 32 levels "01","02","03",..: 32 1 2 3 4 5 6 7 8 9 ...
$ V4: Factor w/ 190 levels "-0.1","-0.2",..: 190 15 15 33 28 39 38 24 17 7 ...
$ V5: Factor w/ 193 levels "-0.1","-0.2",..: 193 4 5 25 23 24 13 10 40 114 ...
$ V6: Factor w/ 179 levels "-0.2","-0.3",..: 179 26 31 39 34 52 46 42 45 21 ...
$ V7: Factor w/ 124 levels "0","0.1","0.2",..: 124 2 76 99 32 8 13 83 62 68 ...
$ V8: Factor w/ 219 levels "0","0.017","0.033",..: 219 171 1 1 1 14 99 2 1 1 ...
> head(Daten)
V1 V2 V3 V4 V5 V6
1 Jahr Monat Tag LUFTTEMPERATUR LUFTTEMPERATUR_MAXIMUM LUFTTEMPERATUR_MINIMUM
2 2015 01 01 -2 -0.4 -3.2
3 2015 01 02 -2 -0.5 -3.7
4 2015 01 03 -4.1 -3.6 -4.8
5 2015 01 04 -3.6 -3.2 -4
6 2015 01 05 -4.8 -3.3 -6.4
V7 V8
1 NIEDERSCHLAGSHOEHE SONNENSCHEINDAUER
2 0.1 6.717
3 3.6 0
4 6.1 0
5 12.4 0
6 0.7 0.317
>
Re: Monatsmittel
Verfasst: Mi Jun 21, 2017 2:15 pm
von jogo
saskiasal47 hat geschrieben: Mi Jun 21, 2017 1:43 pm
das kommt raus ohne data.frame
> str(Daten)
'data.frame': 366 obs. of 8 variables:
$ V1: Factor w/ 2 levels "2015","Jahr": 2 1 1 1 1 1 1 1 1 1 ...
$ V2: Factor w/ 13 levels "01","02","03",..: 13 1 1 1 1 1 1 1 1 1 ...
$ V3: Factor w/ 32 levels "01","02","03",..: 32 1 2 3 4 5 6 7 8 9 ...
$ V4: Factor w/ 190 levels "-0.1","-0.2",..: 190 15 15 33 28 39 38 24 17 7 ...
$ V5: Factor w/ 193 levels "-0.1","-0.2",..: 193 4 5 25 23 24 13 10 40 114 ...
$ V6: Factor w/ 179 levels "-0.2","-0.3",..: 179 26 31 39 34 52 46 42 45 21 ...
$ V7: Factor w/ 124 levels "0","0.1","0.2",..: 124 2 76 99 32 8 13 83 62 68 ...
$ V8: Factor w/ 219 levels "0","0.017","0.033",..: 219 171 1 1 1 14 99 2 1 1 ...
das bedeutet, dass Du keinerlei numerische Werte in Deinem Dataframe hast.
Momentan kannst Du so keine Mittelwerte berechnen
Die Spalte $V1 deutet darauf hin, dass Du eine Kopfzeile hast (also eine Zeile mit den Überschriften für die Spalten). Diese Zeile wurde aber mit bei den Daten eingelesen. Bitte zeige mal den Code, mit dem die Daten eingelesen wurden - so etwas wie:
dort sollte der Parameter
header=TRUE gesetzt werden.
... dann bitte wieder
str(Daten) liefern.
Gruß, Jörg