Umwandlung von Strings in Datum

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

Moderatoren: EDi, jogo

Antworten
benne
Beiträge: 12
Registriert: Mo Okt 08, 2018 1:42 pm

Umwandlung von Strings in Datum

Beitrag von benne »

Hallo allerseits,

im Augenblick stehe ich vor einem Problem, das ich im Grunde für total simpel halte.
Aber irgendwie kriege ich es nicht hin.

Ich bekomme regelmäßig Quartalsdaten der Bundesagentur für Arbeit geliefert, habe also keinen Einfluss auf Datensatzstruktur und Vorgaben bei den Inhalten. In der ersten Spalte jedes Datensatzes steht der Zeitbezug in der Form "März 2018", "Juni 2018", "September 2018" usw.
Aus diesen Zeichenketten möchte ich gerne "richtige" Datumsangaben machen.
Also "31.03.2018", "30.06.2018" bzw. "31.12.2018".

In einem anderen Zusammenhang hatte ich auch schon mit einer ähnlichen Konvertierung zu tun.
Da ging es allerdings darum eine Zeichenkette der Form "20181231" als gültiges Datum zu formatieren.
Dabei hatte ich mir ein eigenes Datumsformat angelegt in der Form:

Code: Alles auswählen

methods::setClass('Date_YYYYMMDD')
methods::setAs("character", "Date_YYYYMMDD", function(from) as.Date(from, format="%Y%m%d"))
Jetzt bin ich - offensichtlich zu blauäugig - mit dem folgenden Datumsformat auf den Zeitbezug "losgegangen".

Code: Alles auswählen

methods::setClass('DATE_MONTH_YEAR')
methods::setAs("character", "DATE_MONTH_YEAR", function(from) as.Date(from, format="%B %Y"))
Als Ergebnis bekomme ich aber nur "NA" und kein Datum. :)

Ich hab' die ganze Zeit das dumpfe Gefühl, dass ich einen elementaren Denkfehler begehe, weiß aber nicht genau wo.
Kann mir jemand auf die Sprünge helfen?
Das wäre klasse.

Schönen Gruß
Benne
Ein Freund ist jemand, der sich deinen Müll anhört, dir sagt dass es Müll ist und trotzdem weiter zuhört.
Robin Williams
benne
Beiträge: 12
Registriert: Mo Okt 08, 2018 1:42 pm

Re: Umwandlung von Strings in Datum

Beitrag von benne »

So, jetzt kann ich meine eigene Frage beantworten:

Im readr-Paket gibt es die Funktion parse_date, die einen vorgegebenen String mittels einer passenden Formatbeschreibung in ein Datum umwandelt.
Da ich hier mit Quartalsdaten hantiere, habe ich mir dann noch den Tag als Wert gespart und mit dem folgenden Codeschnipsel wird aus "Dezember 2018" das Datum "201812":

Code: Alles auswählen

  ...
  ) %>%
  mutate(
    Zeitbezug = format(parse_date(Zeitbezug, "%B %Y", locale=locale("de")),"%Y%m")
  ) %>%
  ...
Vielleicht stolpert ja der ein oder andere ebenfalls über dieses Problem und kann dann dieses Beispiel nutzen.

Schönen Gruß
Benne
Ein Freund ist jemand, der sich deinen Müll anhört, dir sagt dass es Müll ist und trotzdem weiter zuhört.
Robin Williams
Antworten