Int in Datum

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
jessi
Beiträge: 100
Registriert: Mo Jul 10, 2017 9:23 am

Int in Datum

Beitrag von jessi »

Liebe Forum-Mitglieder,

wieder einmal stehe ich vor einem Problem. Diesmal habe ich eine Variable, die die Tagesmittelwerte an verschiedenen Stationen enthält.

Code: Alles auswählen

str(mittel_Tag)
'data.frame':   81984 obs. of  3 variables:
 $ Station        : Factor w/ 672 levels "ANDO","AUSS",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ dm              : int  101 101 101 101 101 101 101 101 101 101 ...
 $ Tagesmittel: num  -0.6 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
Ich habe tägliche Mittelwerte an den insgesamt 672 Stationen, "dm" bezeichnet in diesem Fall den Tag und das Monat (101 = 1. Januar). Greift man eine Station heraus, sieht man, dass "dm" nicht aufsteigend sortiert ist, sondern zuerst jeweils immer der 1. Tag, dann der 2. Tag, usw.

Code: Alles auswählen

 aus <- subset(mittel_Tag, mittel_Tag$Station == "AUSS")
 
str(aus)
'data.frame':   122 obs. of  3 variables:
 $ Codename        : Factor w/ 672 levels "ANDO","AUSS",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ dm              : int  101 102 103 104 ... 201 202 203 204 ... 301 302 ...
 $ Tagesmittel: num  -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
Um den zeitlichen Verlauf graphisch darstellen zu können, benötige ich allerdings die Reihenfolge 101, 201, 301, 401, ... 3012, 3112.
Mit sortieren bin ich leider nicht weitergekommen, da ja die Werte "sortiert" sind, nur halt nicht so, wie ich das gerne möchte. Jetzt dachte ich, dass ich dm in ein Datumsformat umspeicherte und ich im Idealfall eine weitere Spalte Tag "01-01", "01-02" ... habe und ich diese dann dementsprechend sortierte.

Nach mehreren Versuchen bekam ich dann folgendes Ergebnis:

Code: Alles auswählen

dmt <- as.Date(as.character(mittel_Tag$dm), format = "%d%m")
 str(dmt)
Date[1:81984], format: "2019-01-10" "2019-01-10" "2019-01-10" "2019-01-10" "2019-01-10"
Leider stimmt das nicht so ganz, da es ja nicht der 10. Oktober ist, sondern der 1. Januar. Ändere ich den Code zum auf "format = "%d%mm" bekomme ich als Ergebnis NAs.

Vielleicht kann mir jemand helfen, wie ich die Codezeile korrekt eingeben muss, um am Ende 01-01, 02-01, etc. zu bekommen :)
Bzw. gibt es auch eine Möglichkeit, die Spalte dm so zu sortieren, dass ich mir den Umweg über die Datumsumwandlung erspare?

Danke für eure Hilfe.

Grüße
Jessi
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Int in Datum

Beitrag von jogo »

Hallo Jessi,

ein Anfang wäre:

Code: Alles auswählen

mittel_Tag <- transform(mittel_Tag, Tag=dm %/% 100, Monat=dm %% 100)
mittel_Tag$MonTag <- with(mittel_Tag, sprintf("%02d-%02d", Monat, Tag))
Du kannst dann nach Belieben sortieren.

Gruß, Jörg
Antworten