Daten aufbereiten mit dem Paket stringr

von Karl-Kuno Kunze

Am Anfang der meisten Analysen steht häufig die Aufbereitung der Daten. Häufig benötigt man nur Teile von Einträgen in Spalten oder muss, gerade für Datumsangaben, Einträge umformatieren. Dazu benötigt man Werkzeuge zur Manipulation von Text.

R verfügt schon in der Basisversion über vielfältige Funktionen hierfür. Dies sind jedoch teils uneinheitlich im Hinblick auf die Syntax und im Vergleich zu anderen Sprachen wie Python nicht ganz so einfach durchzuführen. Das Paket stringr von Hadley Wickham schließt die Lücke.

Hier gehen wir ein paar einfache Beispiele durch. Dabei verwenden wir reguläre Ausdrücke. Ein Tutorium dazu finden Sie hier.

Vorbereitung

Zunächst laden wir das Paket:

# Paket laden
library(stringr)

Hier ist unsere Test-Zeichenkette

# Zeichenkette
myText <- "Anpfiff EM: 10. Juni um 21.00 Uhr MEZ."
myText
## [1] "Anpfiff EM: 10. Juni um 21.00 Uhr MEZ."

Texte auffinden und extrahieren

Kommt ein Muster im Text vor?

str_detect(myText, "MEZ")
## [1] TRUE

Sie können auch Werte extrahieren, wenn sie einem Muster entsprechen. Im Beispiel wollen wir die Uhrzeit extrahieren. Für uns besteht die Uhrzeit aus jeweils zwei Ziffern, getrennt von einem Punkt und gefolgt von ‚ Uhr‘ (Das geht sicher besser!):

# Nach Muster extrahieren
str_extract(myText, "[0-9]{2}.[0-9]{2} Uhr")
## [1] "21.00 Uhr"

Zeichenketten ersetzen

Sie können auch Zeichenketten ersetzen. Zunächst der einfachste Fall:

# Ersetzen
str_replace(myText, " Juni","06.")
## [1] "Anpfiff EM: 10.06. um 21.00 Uhr MEZ."

Etwas aufpassen muss man bei mehrfachen Ersetzungen. Beispielsweise hier:

# Achtung:
str_replace(myText, c(" Juni", " MEZ"), c("06.", " Mittel-Europäische Zeit"))
## [1] "Anpfiff EM: 10.06. um 21.00 Uhr MEZ."                      
## [2] "Anpfiff EM: 10. Juni um 21.00 Uhr Mittel-Europäische Zeit."

Beide Regeln wurden zwar angewandt, jedoch auf eine jeweils eigene Kopie der Zeichenkette.

Wollen wir beide Ersetzungen in derselben Kopie der Zeichenkette durchführen, schreiben wir lieber:

# Beides auf dieselbe Zeichenkette anwenden:
str_replace_all(myText, c(" Juni" = "06.", " MEZ" = " Mittel-Europäische Zeit"))
## [1] "Anpfiff EM: 10.06. um 21.00 Uhr Mittel-Europäische Zeit."

Die Ersetzungen werden als benannter Vektor (named vector) übergeben.

Funktionen für den Einstieg

Für die ersten Schritte mit stringr eignen sich neben den hier besprochenen Funktionen:

  • str_length()
  • str_locate()
  • str_match()
  • str_split()
  • str_sub()
  • str_trim()
  • str_wrap()

Zusammenfassung

Mit dem Paket stringr haben Sie einen gut gefüllten Werkzeugkasten, um teils lästige Umformatierungen von Daten fast schon zum Vergnügen zu machen. Viel Spaß!

________________________________________________________________________________________________

Sie sind an weiteren Tipps über die Programmiersprache R interessiert? Tragen Sie sich in unseren Newsletter ein und bleiben Sie auf dem Laufenden.

Interesse an einem Seminar beim Autor Karl-Kuno Kunze? Hier gelangen Sie zu unseren Trainings in Potsdam. Optional auch in Ihrem Unternehmen vor Ort. Sprechen Sie uns an!

 

Titelbild von Rainer Sturm  / pixelio.de.