Buffl

Quantitative Datenanalyse mit R

CC
by Cathérine C.

Realistische Arbeitsschritte wenn man neues R Projekt startet

Neuen Absatz erschaffen

  • Reiter oben im Menü “Code” -> “Insert Section”

  • oder: str+Umsch+R


Daten importieren

  • Von Excel: Befehl im script: library(readxl)

    • Enviroment: import Dataset -> from Excel -> code kopieren

    • Code im Skript eingeben zwecks Nachvollziehbarkeit (auf Schrägstriche achten!)

      • (z.B: Dateiname <- read_excel(“anlageort am PC/Dateiname)

        View(dateiname)

  • Von SPSS: Befehl im Skript: library(haven)

    • Enviroment: import Dataset -> from SPSS-> code kopieren

    • Code im Skript eingeben zwecks Nachvollziehbarkeit (auf Schrägstriche achten!)

      • (z.B: Dateiname <- read_sav(“ablageort am PC/Dateiname)

        View(dateiname)

R-Daten hochladen

  • load(ablageort+Dateiname)

  • Auf Schrägstriche achten -> immer /

Hochgeladene Daten auf Objekttypen prüfen

  • Objektklassifizierung: sapply(Datenname, class) oder str(Datenname)

    • gibt dann für jede Spalte den Objekttypen heraus

    • Objekttypen:

      • numeric → Für Berechnungen mit Zahlen

        • Integer: Ganze Zahlen

        • double: Kommazahlen

      • factor → Für (Text)Kategorien mit begrenzten Ausprägungen

        • Levels gibt Menge aller möglichen Kategorien (Ausprägungen) an, die diese Variable annehmen kann.

        • zeigt aber nicht, wie oft diese Kategorie vorkommt – das kommt später, z. B. mit table() oder summary().

        • Funktion: levels(dateiname$variable)

      • character → Für Text

      • date → Für Zeitangaben

      • logical → Für Wahr/Falsch-Aussagen

  • Ausprägungsarten für Faktoren ausgeben lassen:

    • min(datennamen$Variable, na.rm = TRUE)

    • max(….”)

    • Häufigkeit: summary(….”)




Skripte

In RStudio werden Analysen und Berechnungen idealerweise nicht direkt in der Console durchgeführt, sondern in Skriptdateien. Skripte ermöglichen eine strukturierte, nachvollziehbare und wiederholbare Bearbeitung von Daten.

  • Skript erstellen:

    • Menü: File → New File → R Script

    • Tastenkürzel: STRG + Shift + N (Windows)

  • Befehle ausführen:

    • Run-Button im Skript-Fenster

    • Tastenkürzel: STRG + Enter

    • Der Cursor bestimmt, welcher Befehl oder welche markierten Zeilen ausgeführt werden

  • Speichern von Skripten:

    • Menü: File → Save As… oder STRG + S

    • Dateiendung: .R

  • Kommentare einfügen:

    • Symbol # für Kommentare in einer eigenen Zeile oder hinter Befehlen

    • Text nach # wird von R ignoriert

  • Vorteile von Skripten:

    • Alle Berechnungen sind reproduzierbar

    • Analyseschritte können nachvollzogen und geteilt werden

    • Erleichtert Dokumentation und Fehlersuche

  • Skripte strukturieren: 10 goldene Regeln

    1. Konsequenter Coding-Style: Wähle einen Style (z.B. TidyVerse-Style) und halte ihn im gesamten Skript durch.

    2. Klare Dateinamen: Keine Leerzeichen oder Sonderzeichen, Unterstrich oder Bindestrich zur Trennung nutzen.

      • Beispiel: 10_skript_datenaufbereitung.R

    3. Skriptstruktur & Abschnitte:

      • Abschnitte einfügen: Code → Insert Section

        • Tastenkürzel: STRG + Shift + R

        • Hilft, längere Skripte zu gliedern und die Übersicht zu behalten

    4. Pakete am Anfang laden: Installierte Pakete nur einmal installieren, in jedem Skript laden.

      • Beispiel: library(tidyverse)

    5. Variablen- und Funktionsnamen:

      • Variablen: Substantive, klein, Unterstrich für Trennung (lern_daten)

      • Funktionen: Verben, klein, Unterstrich für Trennung (berechne_korrelation())

    6. Kommentare nutzen:

      • Mit # Arbeitsschritte erklären, entweder eigene Zeile oder hinter Befehlen.

    7. Lesbarkeit durch Leerzeichen:

      • Vor/nach Operatoren und Kommas Leerzeichen setzen, lange Zeilen (max. 80 Zeichen) vermeiden.

    8. Datenzugriff klar definieren:

      • Variablen in data.frame über $-Operator ansprechen (peanuts_r$punkte).

    9. TidyVerse-Pipes sauber verwenden:

      • Jede Pipe %>% in eigene Zeile mit erklärendem Kommentar.

      • Beispiel:

        # Pakete laden

        library(tidyverse)

        # Beispiel-Datensatz erstellen

        peanuts_r <- data.frame(

        name = c("Charlie", "Snoopy", "Lucy", "Linus", "Peppermint"),

        region = c("Nord", "Süd", "Nord", "Süd", "Nord"),

        punkte = c(25, 40, 28, 32, 23),

        tgeld = c(5, 0, 7, 2, 5)

        )

        # Datenanalyse mit Tidyverse-Pipes

        peanuts_r %>%

        filter(punkte > 25) %>%

        # nur Personen mit mehr als 25 Punkten

        group_by(region) %>%

        # nach Region gruppieren

        summarise(

        durchschnitt_punkte = mean(punkte),

        # Mittelwert der Punkte berechnen

        summe_tgeld = sum(tgeld)

        # Summe des Taschengelds berechnen

        ) %>%

        arrange(desc(durchschnitt_punkte)) %>%

        # Ergebnis nach absteigendem Mittelwert sortieren

        print()

        # Ausgabe in Console


    10. Skripte speichern & reproduzierbar arbeiten:

      • Berechnungen über Skripte statt Console ausführen

      • Daten, Pakete und Arbeitsschritte am Anfang dokumentieren, Skript regelmäßig speichern.


Objekttypen

In R ist es entscheidend, den Objekttyp einer Variable zu kennen, da Funktionen je nach Typ unterschiedliche Ergebnisse liefern oder sogar Fehlermeldungen erzeugen können. Ein typisches Beispiel: Würde man versuchen, das arithmetische Mittel (mean()) einer Textvariable wie name zu berechnen, so führt dies zu einer Fehlermeldung. Deshalb ist es wichtig, die zentralen Objekttypen in R zu verstehen und zu prüfen.


Zentrale Objekttypen in R

  1. Zahlen (numeric)

    • Unterscheidung:

      • integer (ganze Zahlen)

      • double (Kommazahlen).

    • Standardmäßig werden Zahlen als double gespeichert, z. B. 2 entspricht 2.0.

    • Ganze Zahlen können explizit mit dem Zusatz L definiert werden, z. B. 2L.

    • Beispiel:

      class(peanuts_r$tgeld) # integer

      class(peanuts_r$punkte) # numeric (double)

  2. Text (character)

    • Textvariablen enthalten Zeichenketten.

    • Zahlen, die als Text gespeichert werden sollen, müssen in Anführungszeichen stehen, z. B. "123".

    • Funktionen für die Arbeit mit Text gibt es z. B. im Paket stringr.

    • Beispiel:

      class(peanuts_r$name) # character

  3. Faktoren (factor)

    • kategoriale Variablen, z. B. nominale Variablen (Geschlecht) oder ordinale Variablen (Bildungsniveau), die begrenzt sind

    • Vorteile: ermöglicht Häufigkeitsauszählungen und ist oft effizienter bei statistischen Analysen.

    • Beispiel:

      class(peanuts_r$typ) # factor

      class(peanuts_r$sport) # factor

      levels(peanuts_r$typ) # "Mensch", "Tier"

      levels(peanuts_r$sport) # "Baseball", "Eiskunstlauf", "Golf"

      summary(peanuts_r$typ) # Häufigkeitstabelle

  4. Datum (Date)

    • Spezieller Typ für Datumsangaben.

    • Erlaubt Berechnungen von Zeitabständen zwischen Daten.

    • Beispiel:

      class(peanuts_r$auftritt) # Date

      Sys.Date() # aktuelles Datum

      date() # aktuelles Datum und Uhrzeit

      peanuts_r$dauer <- Sys.Date() - peanuts_r$auftritt

Objekttyp prüfen

  • Mit der Funktion class() kann der Typ einer Variable abgefragt werden:

    class(peanuts_r$name) # character

    class(peanuts_r$auftritt) # Date

    class(peanuts_r$typ) # factor

Objekttyp konvertieren

  • In R müssen Variablen manchmal in einen anderen Typ umgewandelt werden, z. B. bei Import aus Excel oder SPSS.

Testfunktion

Konvertierungsfunktion

is.numeric()

as.numeric()

is.integer()

as.integer()

is.double()

as.double()

is.factor()

as.factor()

is.character()

as.character()

  • Beispiel für Excel-Datensatz:

    peanuts_excel$typ2 <- as.factor(peanuts_excel$typ)

    peanuts_excel$sport2 <- as.factor(peanuts_excel$sport)

  • Beispiel für SPSS-Datensatz (numerische Variablen zu Faktoren):

    peanuts_spss$typ2 <- factor(peanuts_spss$typ,

    levels = c(1, 2), labels = c("Mensch", "Tier"))

    peanuts_spss$sport2 <- factor(peanuts_spss$sport,

    levels = c(1, 2, 3),

    labels = c("Baseball", "Golf", "Eiskunstlauf"))

    class(peanuts_spss$typ2)

    class(peanuts_spss$sport2)

Zusammenfassung

  • Zahlen: für mathematische Operationen, unterscheiden integer/double.

  • Text (character): keine direkten Berechnungen, geeignet für Namen oder Textfelder.

  • Faktoren (factor): für kategoriale Variablen, sinnvoll bei Häufigkeiten und statistischen Analysen.

  • Datum (Date): für Berechnung von Zeitspannen.


Daten laden in R

In der Praxis werden Datensätze in R selten manuell eingegeben. Meist liegen die Daten in externen Dateien vor, die in R geladen bzw. importiert werden.

  • R-eigene Datenformate: .RData oder .rds – können direkt mit R geladen werden.

  • Andere Formate: Excel (.xlsx) oder SPSS (.sav) – müssen über Importfunktionen oder Pakete (readxl, haven) eingelesen werden.


R-Daten hochladen

  • Über das Menü

    • FileOpen File… → Datei auswählen.

  • Über das Environment-Fenster

    • Datei-Symbol anklicken → Auswahlfenster öffnet sich.

  • Tastenkürzel: Strg + O öffnet das Auswahlfenster direkt.

  • Direkt über das Skript: EMPFOHLEN

    • Befehl: load(ablageort+Dateiname)

      • Beispiel: load( "H:/Verzeichnis1/Verzeichnis2/peanuts_r.RData")


    • Vorteil: Analysen werden reproduzierbar.

    • Wichtig: Arbeitsverzeichnis muss korrekt gesetzt sein.

      • Auf Schrägstriche achten -> immer /

  • und dann immer: View(Datensatz) (zB. View(peanuts_r))


Daten importieren

  • Von Excel:

    • Befehl im script:

      • library(readxl)

      • read_excel(….siehe unten)

      • View(Dateinamen)

    • Enviroment: import Dataset -> from Excel -> code kopieren

      • Code im Skript eingeben zwecks Nachvollziehbarkeit (auf Schrägstriche achten!)

        • (z.B: Dateiname <- read_excel(“anlageort am PC/Dateiname)

        • View(dateiname)

  • Von SPSS:

    • Befehl im Skript: library(haven)

      • read_sav(….siehe unten)

      • View(Dateiname)

      • Achtung: Datenansicht: Ziffern statt Beschriftungen in Spalten

    • Enviroment: import Dataset -> from SPSS-> code kopieren

      • Code im Skript eingeben zwecks Nachvollziehbarkeit (auf Schrägstriche achten!)

        • (z.B: Dateiname <- read_sav(“ablageort am PC/Dateiname)

        • View(dateiname)

  • CVS-Dateien: Comma-Separated Values, erste Zeile enthält Variablen, folgende Zeilen die Daten.

    • Befehl im Skript: library(readr)

      • read_csv(Ablageort/Dateiname) → für internationale CSVs (Felder durch Komma getrennt)

      • read_csv2(Ablageort/Dateiname) → für deutsch/europäische CSVs (Felder durch Semikolon getrennt)

      • read_delim("Pfad/zur/Datei.csv", delim = ",")

        # oder delim=";"

        • = flexibel, du bestimmst selbst das Trennzeichen

    • Ist die Datei unbekannt und wir wissen nicht ob , oder ; verwendet wurde, dann:

      • read_lines("Pfad/zur/Datei.csv", n_max = 5) zeigt die ersten 5 Zeilen der Datei genau so, wie sie im Text vorliegen, inklusive aller Trennzeichen (;, ,, \t usw.). So siehst du direkt, welches Zeichen als Spaltentrenner verwendet wird.


Datenstruktur

In R ist neben dem Objekttyp auch die Datenstruktur entscheidend, da sie beschreibt, wie die Daten organisiert und zusammengefasst sind. Die Datenstruktur beeinflusst, welche Operationen und Funktionen auf den Daten angewendet werden können und wie die Daten ausgegeben werden.

Wichtige Datenstrukturen

  1. Vektoren

    • Ein Vektor ist eine eindimensionale Sammlung von Elementen.

    • Alle Elemente eines Vektors müssen denselben Objekttyp haben, z. B. nur Zahlen (numeric), nur Text (character) oder nur Faktoren.

    • Mischung verschiedener Typen ist nicht möglich – R wandelt in diesem Fall automatisch alles in einen gemeinsamen Typ (meist Text).

    • Beispiele für Vektoren: Alter, Namen, Punktzahlen.

  2. Tabellen (data frames)

    • Ein data frame ist eine Sammlung von Vektoren gleicher Länge, die zu Spalten zusammengefügt werden.

    • Jede Spalte kann einen anderen Objekttyp haben: Zahlen, Text, Faktoren, Datum usw.

    • Ein data frame eignet sich für die Speicherung von Datensätzen mit mehreren Variablen, wie dem peanuts_r-Datensatz.

    • Beispiel:

      class(peanuts_r) # Ausgabe: "data.frame"

  3. Tibbles

    • Tibbles sind eine Weiterentwicklung der klassischen data frames und stammen aus dem tidyverse.

    • Vorteile:

      • Optimierte und übersichtlichere Ausgabe in der Konsole

      • Automatisches Beibehalten von Spaltennamen und Typen

      • Vereinfachter Umgang bei fehlenden Werten

    • Viele tidyverse-Funktionen erwarten tibbles statt klassischer data frames.

    • Excel- und SPSS-Datensätze werden beim Import in R standardmäßig als tibbles importiert.

    • Beispiel:

      class(peanuts_excel)

      # Ausgabe: "tbl_df" "tbl" "data.frame"

      class(peanuts_spss)

      # Ausgabe: "tbl_df" "tbl" "data.frame"

Weitere Datenstrukturen

Diese Strukturen werden in dieser Einführung nicht vertieft, können aber für komplexere Analysen wichtig sein.

  • Matrix: zweidimensional, alle Elemente müssen denselben Typ haben

  • Array: mehrdimensionale Datenstruktur, homogen

  • Liste: Sammlung von Objekten beliebigen Typs, z. B. Vektoren, Tabellen, Funktionen


Konvertierung zwischen Datenstrukturen

  • Tibbles können in klassische data frames umgewandelt werden:

    peanuts_excel_df <- as.data.frame(peanuts_excel)

  • Das ist nützlich, wenn ältere Funktionen nicht direkt mit tibbles arbeiten.

Zusammenfassung

  • Vektor: eindimensional, homogen, z. B. Alter, Namen

  • Data frame: mehrdimensional, Spalten können verschiedene Typen haben

  • Tibble: moderne Version des data frames, vorteilhaft für tidyverse-Analysen

  • Mit class() kann die Datenstruktur eines Objekts jederzeit abgefragt werden.


Realistischer Datensatz Kapitel 4

1. Pakete installieren und laden

  • Installation (nur einmal nötig):

install.packages("tidyverse") install.packages("sjmisc") install.packages("sjPlot") install.packages("sjlabelled")

  • Laden der Pakete:

library(tidyverse) library(haven) library(sjmisc) library(sjPlot) library(sjlabelled)

2. Datensatz laden

  • .RData laden und im Skript verfügbar machen:

load("Pfad/zum/Datensatz/ess9de_m1.RData")

3. Überblick über den Datensatz verschaffen

  • Gesamte Tabelle anzeigen:

View(ess9de_m1)

  • Variablennamen ausgeben:

names(ess9de_m1)

  • Erste/letzte 6 Zeilen:

head(ess9de_m1) tail(ess9de_m1)

  • Struktur & Übersicht (kurz und zeilenweise):

glimpse(ess9de_m1) view_df(ess9de_m1) # schöner im Viewer

4. Einzelvariable untersuchen: Politisches Interesse (polintr)

  • Häufigkeitstabelle erstellen:

table(ess9de_m1$polintr) # nur gültige Antworten table(ess9de_m1$polintr, useNA = "always") # auch fehlende Werte table(ess9de_m1$polintr, useNA = "ifany") # nur wenn NA vorhanden

  • Alternative mit dplyr:

count(ess9de_m1, polintr)

  • Alternative mit sjmisc:

frq(ess9de_m1, polintr) # Tabellarische Ausgabe inkl. % frq(ess9de_m1, polintr, out = "viewer") # Ausgabe im Viewer frq(ess9de_m1, polintr, out = "browser") # Ausgabe im Browser

5. Tabellen sortieren (sjmisc frq)

  • Absteigend nach Häufigkeit:

frq(ess9de_m1, polintr, sort.frq = "desc", out = "viewer")

  • Aufsteigend nach Häufigkeit:

frq(ess9de_m1, polintr, sort.frq = "asc", out = "viewer")

💡 Merksätze / Tipps:

  • View() → Daten im RStudio-Viewer ansehen

  • head() / tail() → erste/letzte Zeilen schnell prüfen

  • glimpse() → kompakter Überblick (Variablen + erste Werte)

  • table() → einfache Häufigkeitstabelle

  • count() (dplyr) → besser formatierte Häufigkeiten

  • frq() (sjmisc) → Tabellen mit % und Optionen für Viewer/Browser

  • useNA in table() immer angeben, wenn fehlende Werte berücksichtigt werden sollen


Datenmanagement mit dyplyr

Das Paket dplyr gehört zum sogenannten Kern-tidyverse. Mit dplyr können Variablen ausgewählt, Variablen umbenannt, Variablen gefiltert, Variablen verändert und einfache deskriptive Statistiken berechnet werden. Die Funktionen von dplyr sind leicht zu merken, da sie einprägsame Verben verwenden.

Die wichtigsten Funktionen und ihre Aufgaben sind:

Funktion

Beschreibung

select()

Variablen auswählen

rename()

Variablen umbenennen

filter()

Zeilen filtern / Teildatensätze erstellen

mutate()

Neue Variablen erstellen oder bestehende verändern

summarise()

Deskriptive Statistiken berechnen

group_by()

Gruppenbildung, um Berechnungen auf Gruppen anzuwenden

Diese Funktionen können miteinander kombiniert werden, z. B. select + rename oder group_by + summarise.


1. Variablen auswählen – select()

Bei großen Datensätzen sind wir oft nur an wenigen Variablen interessiert. Mit select() kann ein Datensatz auf diese Variablen reduziert werden.

Beispiele:

# Variante 1: neues Objekt erstellen auswahl <- select(ess9de_m1, trstprl, stfedu, gndr, bildung) View(auswahl) # Variante 2: Pipe-Operator auswahl <- ess9de_m1 %>% select(trstprl, stfedu, gndr, bildung)

Beide Varianten erstellen ein neues Objekt auswahl mit nur den ausgewählten Variablen.


2. Variablen umbenennen – rename()

Oft geben Variablennamen keine direkten Hinweise auf ihren Inhalt. Mit rename() können Variablen klarer benannt werden.

Beispiel:

auswahl <- rename(auswahl, ver.bundestag = trstprl, z.bildung = stfedu, geschlecht = gndr) View(auswahl)

  • Syntax: neuerName = alterName

  • Praktisch zur besseren Lesbarkeit oder Standardisierung.

Kombination select + rename:

ver_politik <- ess9de_m1 %>% select(trstprl, stfedu, gndr) %>% rename(ver.bundestag = trstprl, z.bildung = stfedu, geschlecht = gndr) View(ver_politik)


3. Variablen filtern – filter()

filter() erstellt Teildatensätze, d.h. nur bestimmte Zeilen bleiben enthalten.

Vergleich zu select():

  • select() → Spalten / Variablen

  • filter() → Zeilen / Beobachtungen

Beispiele:

frau <- filter(auswahl, geschlecht == 2) mann <- filter(auswahl, geschlecht == 1) frau.hohe.bildung <- filter(auswahl, geschlecht == 2 & bildung == 2)

Vergleichsoperatoren:

Symbol

Bedeutung

<

kleiner als

>

größer als

<=

kleiner oder gleich

>=

größer oder gleich

==

gleich

!=

ungleich

&

und

`

`

is.na()

fehlende Werte

!is.na()

gültige Werte


Wichtig: Bei select und filter entscheidet man immer, ob <- benutzt wird, um ein neues Objekt und damit Datensatz gespeichert wird oder nur über die Console angezeigt wird.


4. Variablen erstellen / verändern – mutate()

Mit mutate() können neue Variablen erstellt oder bestehende verändert werden.

Beispiel: Geschlechterkodierung umdrehen

auswahl.neu <- auswahl %>% mutate(geschlecht = ifelse(geschlecht == 1, 2, ifelse(geschlecht == 2, 1, geschlecht))) %>% mutate(geschlecht = set_labels(geschlecht, labels = c("Female" = 1, "Male" = 2))) View(auswahl.neu)

  • Ursprüngliche Variable bleibt bestehen, neue Variable wird hinzugefügt oder bestehende ersetzt.

  • set_labels() aus sjlabelled fügt Labels zu den numerischen Werten hinzu.


5. Deskriptive Statistiken – summarise()

summarise() berechnet Kennzahlen wie Mittelwert, Minimum, Maximum als Ausgabe über die Console

Beispiel ungruppiert:

summarise(auswahl, Mean.Bundestag = mean(ver.bundestag, na.rm = TRUE), Mean.Bildung = mean(z.bildung, na.rm = TRUE))

  • na.rm = TRUE wichtig, um fehlende Werte auszuschließen.

Gruppierte Berechnungen – group_by() + summarise():

auswahl %>% group_by(geschlecht) %>% summarise( Mean.Bundestag = mean(ver.bundestag, na.rm = TRUE), Mean.Bildung = mean(z.bildung, na.rm = TRUE) )

  • Berechnet Mittelwerte getrennt nach Geschlecht.

  • Kombinierbar mit anderen Gruppen wie Bildungsgrad:

auswahl %>% group_by(bildung) %>% summarise( Mean.Bundestag = mean(ver.bundestag, na.rm = TRUE), Mean.Bildung = mean(z.bildung, na.rm = TRUE) )


6. Pipe-Operator – %>%

  • Verbindet mehrere Funktionen zu einer Kette.

  • Code kann von links nach rechts gelesen werden („und dann …“).

  • Beispiel:

ess9de_m1 %>% select(trstprl, stfedu, gndr) %>% rename(ver.bundestag = trstprl, z.bildung = stfedu, geschlecht = gndr) %>% filter(geschlecht == 2) %>% summarise(Mean.Bundestag = mean(ver.bundestag, na.rm = TRUE))

  • Lesbarer als verschachtelte Funktionen.


7. Weitere nützliche Funktionen

Funktion

Paket

Beschreibung

frq()

sjmisc

Häufigkeitstabellen inkl. Labels, Prozenten

set_labels()

sjlabelled

Labels für numerische Variablen setzen

View()

Base R

Öffnet Datensatz im RStudio-Viewer

Quellen & weiterführende Infos:

  • dplyr-Tidyverse: https://dplyr.tidyverse.org

  • RStudio-Vignetten: vignette("dplyr")


Datenaufbereitung mit sjmisc

Das Paket sjmisc bietet in R Funktionen zur Variablenaufbereitung, insbesondere zum Rekodieren, Zusammenfassen und Umkodieren von Variablen. Diese Schritte sind ein zentraler Bestandteil der Datenvorbereitung, da Datensätze oft Rohwerte enthalten, die für Analysen angepasst werden müssen.


Vor einer Analyse ist es empfehlenswert, neue Variablen zu erstellen, anstatt die Originalvariablen zu überschreiben. So bleiben die Originaldaten erhalten und die Datenaufbereitung kann überprüft werden.


1. Häufigkeitstabellen erstellen – frq()

Die Funktion frq() zeigt Häufigkeiten, Prozente und kumulierte Prozente einer Variablen an. Optional kann die Ausgabe direkt im Viewer oder Browser angezeigt werden.

Beispiel:

frq(ess9de_m1, health, out = "viewer")

  • ess9de_m1: Datensatz

  • health: Variable

  • out = "viewer": Anzeige im Viewer-Fenster

Diese Funktion eignet sich gut, um Rohwerte zu überprüfen und den Verteilungstyp einer Variable zu erkennen.


2. Variablen rekodieren – rec()

Mit rec() können Werte einer Variablen geändert oder zusammengefasst werden. Syntax:

ess9de_m1$health_neu <- rec( ess9de_m1$health, # Ursprungsvariable rec = "1=4 [very good]; 2=3 [good]; 3=2 [fair]; 4=1 [bad]; 5=0 [very bad]; NA=NA", var.label = "Gesundheit umkodiert", # Variablenlabel as.num = FALSE # Faktor oder numerisch )

Erläuterung:

  • Alte Werte (1, 2, …) werden neuen Werten (4, 3, …) zugeordnet

  • In eckigen Klammern können Labels vergeben werden

  • NA bleibt unverändert

  • as.num = FALSE erzeugt einen Faktor mit Labels

Tipp: Immer eine neue Variable erstellen, damit das Original erhalten bleibt.


3. Gruppierung von Werten

Mehrere Rohwerte können zu Gruppen zusammengefasst werden:

ess9de_m1$health_neugruppe <- rec( ess9de_m1$health, rec = "1:2=2 [very/good]; 3=1 [fair]; 4:5=0 [very/bad]; NA=NA", var.label = "Gesundheit umkodiert in Gruppen", as.num = FALSE )

  • 1:2=2: Werte 1 und 2 werden zu 2 zusammengefasst

  • 4:5=0: Werte 4 und 5 werden zu 0 zusammengefasst

  • Gut geeignet, um ordinalskaliertes Material zu reduzieren.

4. Variableninhalte ändern – Beispiel „Badge“

Manchmal ist es sinnvoll, Variablenwerte inhaltlich umzukodieren:

frq(ess9de_m1, badge, out = "viewer") ess9de_m1$badge_neu <- rec( ess9de_m1$badge, rec = "1=1 [ja]; 2=0 [nein]; else=NA", var.label = "Badge getragen", as.num = TRUE ) frq(ess9de_m1, badge, badge_neu, out = "viewer")

  • 1=1 [ja]: Originalwert 1 wird 1 mit Label „ja“

  • 2=0 [nein]: Originalwert 2 wird 0 mit Label „nein“

  • else=NA: Alle anderen Werte → NA

Hinweis: Das else-Argument sollte immer am Ende stehen.


5. Kontrolle der Datenaufbereitung

Nach jeder Rekodierung sollten die Häufigkeitstabellen der Original- und der neuen Variable überprüft werden:

frq(ess9de_m1, health, health_neu, out = "viewer") frq(ess9de_m1, badge, badge_neu, out = "viewer")

So können Fehler in der Rekodierung früh erkannt werden.


6. Übersicht der wichtigsten Argumente von rec()

Argument

Funktion

rec

Spezifikation der Umkodierung (alte Werte = neue Werte; optional Labels)

var.label

Variablenlabel für die neue Variable

val.labels

Optional: Labels für numerische Werte (z. B. bei 0/1)

as.num

TRUE = numerisch, FALSE = Faktor mit Labels

else

Alle übrigen Werte, die nicht explizit kodiert wurden

7. Zusammenfassung

  • frq(): Häufigkeiten kontrollieren

  • rec(): Variablenwerte ändern oder zusammenfassen

  • Neue Variable erstellen: Immer besser als Überschreiben

  • Kontrolle: Häufigkeitstabellen von Original- und neuer Variable prüfen

  • Labels vergeben: Klarheit und Interpretierbarkeit erhöhen


———

Variablen zusammenfassen / Indexbildung


3a. Mittelwert – row_means()

ess9de_m1 <- row_means( ess9de_m1, trstprl, trstlgl, trstplc, n = 3, var = "poltrust" )

  • Berechnet Zeilenmittelwert

  • n = Mindestanzahl gültiger Werte

  • var = Name der neuen Variable


3b. Werte zählen – row_count()

ess9de_m1 <- row_count( ess9de_m1, contplt, badge, sgnptit, pbldmn, count = 1, var = "totalpart" )

  • Zählt Vorkommen bestimmter Werte pro Zeile

  • count = Wert, der gezählt wird (z. B. 1 = Ja)


4. Wertelabels konvertieren – as_label()

Zweck: Numerische Variablen mit Wertelabels versehen, sodass alte Funktionen wie table() Labels anzeigen.

# Ursprungsvariable petition frq(ess9de_m1$petition) table(ess9de_m1$petition) # Konvertieren ess9de_m1$petition.f <- as_label(ess9de_m1$petition) table(ess9de_m1$petition.f)

  • as_label() ersetzt Werte durch ihre Labels

  • Praktisch für Berichte und Tabellen


5. Dichotomisierung von Variablen

Wenn man eine Variable, z.B. Alter in 2 Gruppen unterteilen möchte

  • Funktion: dicho()

  • Beispiel: ess9de_m1 <- dicho(

    ess9de_m1,

    agea,

    dich.by = mean #oder eine beliebige Zahl z.B: 40

    suffix = “_categorymedian (oder40) #Name

6.Mehrere Gruppen aus einer Variable erstellen

wenn man nicht nur 2 Gruppen, sondern mehrere braucht, z.B. für Altersgruppen

  • Funktion: group_var()

  • Beispiel: ess9dem1 <- group_var(

    ess9de_m1,

    agea,

    size = 10, #teilt immer nach 10 Werten

  • ODER

    size = “auto”, n = 5, #es werden autom. eingeteilt in 5 Gruppen

    suffix = “_g” ,#(Name)

    right.intervall = TRUE (um unlogische Abf. zu verm

5. Hinweise

  • Immer neue Variable erstellen, Ursprungsvariablen nicht überschreiben

  • frq() eignet sich zur Kontrolle der Rekodierung und Zusammenfassung

  • rec() ist flexibel, erlaubt Einzelskalierungen, Wertbereiche und Gruppierungen

  • row_means() und row_count() sind nützlich für Indexbildung und Summenwerte

  • as_label() erleichtert die Interpretation in Tabellen und Diagrammen


6. Kurzüberblick aller Funktionen

Funktion

Zweck

frq()

Häufigkeitstabelle inkl. Labels

rec()

Variablenwerte ändern / zusammenfassen

row_means()

Mittelwert aus mehreren Variablen

row_count()

Anzahl bestimmter Werte in mehreren Variablen

as_label()

Wertelabels konvertieren

select()

Teildatensatz erstellen (für Übersicht)

dicho()

Dichotome Teilung einer Variable

group_var()

Mehrfache Teilung einer Variable


Author

Cathérine C.

Information

Last changed