Mit Text Daten arbeiten & KTZH Corporate Design mit statR

rstatsZH - Data Science mitR

Lars Schöbitz

Nov 18, 2025

Lernziele (für diese Woche)

  1. Die Lernenden können die Funktion str_detect() aus dem R-Paket stringr verwenden um das Auftreten oder Fehlen bestimmter Muster in Zeichenvektoren (character Vektor) zu ermitteln.
  2. Due Lernenden können str_detect() mit dplyr Funktionen wie filter() oder mutate() nutzen, um Daten über das Auftreten von Mustern in Teilmengen zu unterteilen oder darauf basierend neue Variablen zu erstellen.
  3. Die Lernenden können das statR R-Paket nutzen um eine Visualisierung im Corporate Design des Kanton Zürich zu erstellen.

Arbeiten mit Strings in R

  • Strings -> Zeichenkette (eine folge von Zeichen)
  • Werden verwendet um Textdaten darzustellen
  • Können beliebige Länge haben
  • Erstellt mit einfachen oder doppelten Anführungszeichen
  • Sonderzeichen können mit dem Backslash \ “ausgenommen” werden

Anführungszeichen

  • Erstellt mit einfachen oder doppelten Anführungszeichen
string1 <- "Dies ist eine Zeichenkette"
string2 <- 'Wenn ich ein "Anführungszeichen" in eine Zeichenkette einfügen 
            möchte, verwende ich einfache Anführungszeichen'

Der Backslash \

Um ein einfaches oder doppeltes Anführungszeichen in einer Zeichenkette zu verwenden, kann \, um es “auszunehmen”:

double_quote <- "\"" 
single_quote <- '\''

Falls du ein wörtliches Backslash in deiner Zeichenkette verwenden möchtest, musst du es “ausnehmen”: "\\":

backslash <- "\\"

Beachte dass die gedruckte Darstellung einer Zeichenkette in der Console nicht identisch mit der Zeichenkette selbst ist:

x <- c(single_quote, double_quote, backslash)
x
[1] "'"  "\"" "\\"

Um den Rohinhalt der Zeichenkette zu sehen, verwende str_view()

str_view(x)
[1] │ '
[2] │ "
[3] │ \

Vornamen Statistik

Daten: Vornamen der Bevölkerung nach Jahrgang, Schweiz, 2023

  • jährlich aktualisierte Daten
  • Vornamen mit weniger als 3 Nennungen werden ausgeschlossen
  • Datenquelle: Bundesamt für Statistik

Frage: Wieviele einzigartige Vornamen gibt es in der Schweiz?

  1. 200’000
  2. 1’000
  3. 1.0 mio
  4. 50’000

Vornamen Statistik

Frage: Wieviele einzigartige Vornamen gibt es in der Schweiz?

vornamen
# A tibble: 997,548 × 4
   vorname   geburtsjahr  wert geschlecht
   <chr>           <dbl> <dbl> <chr>     
 1 Albert           1918     1 m         
 2 Julian           1918     1 m         
 3 Alfred           1919     1 m         
 4 Walter           1919     1 m         
 5 Arthur           1920     1 m         
 6 Bronislaw        1920     1 m         
 7 Gerhart          1920     1 m         
 8 Helmut           1920     1 m         
 9 Joseph           1920     1 m         
10 Louis            1920     1 m         
# ℹ 997,538 more rows
vornamen |> 
    distinct(vorname) 
# A tibble: 66,911 × 1
   vorname  
   <chr>    
 1 Albert   
 2 Julian   
 3 Alfred   
 4 Walter   
 5 Arthur   
 6 Bronislaw
 7 Gerhart  
 8 Helmut   
 9 Joseph   
10 Louis    
# ℹ 66,901 more rows

Vornamen Statistik

Frage: Wieviele einzigartige Vornamen gibt es in der Schweiz?

vornamen
# A tibble: 997,548 × 4
   vorname   geburtsjahr  wert geschlecht
   <chr>           <dbl> <dbl> <chr>     
 1 Albert           1918     1 m         
 2 Julian           1918     1 m         
 3 Alfred           1919     1 m         
 4 Walter           1919     1 m         
 5 Arthur           1920     1 m         
 6 Bronislaw        1920     1 m         
 7 Gerhart          1920     1 m         
 8 Helmut           1920     1 m         
 9 Joseph           1920     1 m         
10 Louis            1920     1 m         
# ℹ 997,538 more rows
vornamen |> 
    count(vorname, wt = wert)
# A tibble: 66,911 × 2
   vorname      n
   <chr>    <dbl>
 1 A'isha       3
 2 Aada        14
 3 Aadam        7
 4 Aadan        8
 5 Aadarsh      3
 6 Aaden        5
 7 Aadesh       5
 8 Aadhav       5
 9 Aadhavan     5
10 Aadhi        5
# ℹ 66,901 more rows

Vornamen Statistik

Frage: Was sind die häufigsten 10 Vornamen in der Schweiz?

vornamen |> 
    count(vorname, geschlecht, 
          wt = wert, sort = TRUE) |>
    head(n = 10) 
# A tibble: 10 × 3
   vorname   geschlecht     n
   <chr>     <chr>      <dbl>
 1 Maria     w          73412
 2 Daniel    m          63008
 3 Peter     m          52935
 4 Thomas    m          52780
 5 Hans      m          42601
 6 Christian m          41618
 7 Martin    m          40523
 8 Anna      w          40099
 9 Michael   m          39961
10 Andreas   m          39388

Vornamen Statistik

Frage: Was sind die häufigsten 10 Vornamen in der Schweiz?

vornamen |> 
    count(vorname, geschlecht, 
          wt = wert, sort = TRUE) |>
    head(n = 10) |>
    # aus dem knitr R-Paket
    kable()
vorname geschlecht n
Maria w 73412
Daniel m 63008
Peter m 52935
Thomas m 52780
Hans m 42601
Christian m 41618
Martin m 40523
Anna w 40099
Michael m 39961
Andreas m 39388

Vornamen Statistik

Frage: Was sind die häufigsten 10 Vornamen in der Schweiz?

vornamen |> 
    count(vorname, geschlecht, 
          wt = wert, sort = TRUE) |>
    head(n = 10) |>
    # aus dem gt R-Paket
    gt()
vorname geschlecht n
Maria w 73412
Daniel m 63008
Peter m 52935
Thomas m 52780
Hans m 42601
Christian m 41618
Martin m 40523
Anna w 40099
Michael m 39961
Andreas m 39388

Vornamen Statistik

Frage: Was sind die häufigsten 10 Vornamen in der Schweiz?

vornamen |> 
    count(vorname, geschlecht, 
          wt = wert, sort = TRUE) |>
    head(n = 10) |>
    # nutze gt R-Package für die Darstellung
    gt() |> 
    tab_style(
        style = cell_fill(color = "#AFF0ED"),
        locations = cells_body(
            columns = everything(),
            rows = geschlecht == "m"
        )
    ) |>
    tab_style(
        style = cell_fill(color = "#FFD700"),
        locations = cells_body(
            columns = everything(),
            rows = geschlecht == "w"
        )
    )
vorname geschlecht n
Maria w 73412
Daniel m 63008
Peter m 52935
Thomas m 52780
Hans m 42601
Christian m 41618
Martin m 40523
Anna w 40099
Michael m 39961
Andreas m 39388

Vornamen Statistik

Frage: Was ist die Verteilung der Vornamenlängen in der Schweiz?

vornamen |> 
    count(vorname, wt = wert) |> 
    mutate(laenge = str_length(vorname)) |> 
    count(laenge) |> 
    print(n = 19)
# A tibble: 19 × 2
   laenge     n
    <int> <int>
 1      2   128
 2      3  1118
 3      4  5894
 4      5 14119
 5      6 16437
 6      7 12379
 7      8  7420
 8      9  3787
 9     10  2048
10     11  1185
11     12   848
12     13   597
13     14   421
14     15   251
15     16   149
16     17    83
17     18    31
18     19    11
19     20     5

Vornamen Statistik

Frage: Was ist die Verteilung der Vornamenlängen in der Schweiz?

vornamen_laenge_sum <- vornamen |> 
    count(vorname, wt = wert) |> 
    mutate(laenge = str_length(vorname)) |> 
    count(laenge)

ggplot(data = vornamen_laenge_sum, 
       mapping = aes(x = laenge, y = n)) +
    geom_col() +
    theme_minimal(base_size = 12)

Ihr seid dran: Vornamen Statistik

Frage: Welche Fragen könnten wir noch zu den Vornamen in der Schweiz stellen?

  1. Macht ein paar Notizen.
  2. Teilt sie im Chat.
02:00

stringr: Zeichenkettenmanipulation in R

Hauptmerkmale:

  • Teil der tidyverse R-Pakete
  • Konsistente Syntax mit str_-Präfix

Funktionen:

  • str_length(): Stringlänge ermitteln
  • str_c(): Strings verketten
  • str_sub(): Teilstrings extrahieren/ersetzen
  • str_detect(): Mustererkennung
  • str_count(): Anzahl Vorkommen eines Musters

Ich bin dran: stringr R-Paket



Zurücklehnen und Fragen stellen!

30:00

Pause machen

Bitte steh auf und beweg dich.

10:00

Kanton Zürich - Corporate Design

Vornamen Statistik mit statR R-Paket

statR R-Paket

  • Erstellt Corporate Design Visualisierungen für den Kanton Zürich
  • Enthält ein benutzerdefiniertes ggplot2-Theme
  • Bietet generische Farbpaletten für Datenvisualisierungen
  • Export von Datensätzen als XLSX-Dateien mit Quellinformationen und zusätzlichen Metadaten
  • Stellt eine HTML-Berichtsvorlage zur Verfügung
  • Offen auf GitHub verfügbar: https://github.com/statistikZH/statR

Wir sind dran: 02-statR-wir.qmd

  1. Öffne posit.cloud in deinem Browser (verwende dein Lesezeichen).
  2. Öffne den rstatszh-k011 Arbeitsbereich (Workspace) für den Kurs.
  3. Klicke auf Start neben md-08-uebungen.
  4. Suche im Dateimanager im Fenster unten rechts die Datei 02-statR-wir.qmd und klicke darauf, um sie im Fenster oben links zu öffnen.
30:00

Pause machen

Bitte steh auf und beweg dich.

10:00

Ihr seid dran: 03-vornamen-ihr.qmd

  1. Öffne posit.cloud in deinem Browser (verwende dein Lesezeichen).
  2. Öffne den rstatszh-k011 Arbeitsbereich (Workspace) für den Kurs.
  3. Klicke auf Continue neben md-08-uebungen.
  4. Suche im Dateimanager im Fenster unten rechts die Datei 03-vornamen-ihr.qmd und klicke darauf, um sie im Fenster oben links zu öffnen.
  5. Folge den Anweisungen in der Datei.
30:00

Zeitpuffer: Modul 8

Kann ich noch etwas zum heutigen Modul erklären?

10:00

Zusatzaufgaben Modul 8

Modul 8 Dokumentation

Zusatzaufgaben Abgabedatum

  • Abgabedatum: Dienstag, 25. November

Danke

Danke! 🌻

Folien erstellt mit revealjs und Quarto: https://quarto.org/docs/presentations/revealjs/

Access slides als PDF auf GitHub

Alle Materialien sind lizenziert unter Creative Commons Attribution Share Alike 4.0 International.