Statistik

R-Kurs · Kapitel 4 · Datensätze in R

Datensätze in R

Data-Frames anlegen

Ein Data-Frame ist eine Tabelle aus gleich langen Spalten (die Vektoren dürfen unterschiedliche Typen haben):

R
personen <- data.frame(
name  = c("Anna", "Ben", "Cem"),
alter = c(23, 31, 27),
raucht = c(FALSE, TRUE, FALSE)
)
personen
str(personen)          # Struktur ansehen
personen$alter         # Spalte als Vektor
Ausgabe
   name alter raucht
1  Anna    23  FALSE
2   Ben    31   TRUE
3   Cem    27  FALSE
[1] 23 31 27
Mini-Aufgabe

Lege einen Data-Frame mit den Spalten stadt (HH, M, B) und einwohner (1.8, 1.5, 3.7) an und berechne die mittlere Einwohnerzahl.

Lösung zeigen
R
df <- data.frame(
stadt = c("HH", "M", "B"),
einwohner = c(1.8, 1.5, 3.7)
)
mean(df$einwohner)
Ausgabe
[1] 2.333333

Dateien einlesen

Je nach Format die passende Funktion — die Argumente sep (Trenner), dec (Dezimalzeichen) und header sind entscheidend:

RDateinamen/Trennzeichen müssen exakt passen, sonst werden Zahlen als Text gelesen.
# allgemeine Textdatei
df <- read.table("DWD.txt", header = TRUE, sep = ";", dec = ".")
# deutsche CSV (Semikolon, Komma-Dezimal)
farbe <- read.csv2("Farbe.csv")
# Excel (Paket readxl)
library(readxl)
spx <- read_excel("SPX.xlsx")

Nach dem Einlesen immer prüfen: str(df), head(df), summary(df). Der Wert NA markiert fehlende Beobachtungen.

Mit Datum arbeiten

Datumsangaben wandelt man mit as.Date() in echte Datumswerte um; dann lässt sich damit rechnen und sortieren:

R
d <- as.Date(c("2015-01-01", "2015-03-15"))
d[2] - d[1]            # Differenz in Tagen
format(d, "%d.%m.%Y")  # deutsches Format
Ausgabe
Time difference of 73 days
[1] "01.01.2015" "15.03.2015"

Merke: Erst str() nach dem Einlesen! Falsche sep/dec-Argumente führen dazu, dass Zahlenspalten als character (Text) landen und Rechnungen scheitern.

Abruf-Quiz

Frage 1 / 2

Womit greift man auf die Spalte „Alter" eines Data-Frames df zu?