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):
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 name alter raucht
1 Anna 23 FALSE
2 Ben 31 TRUE
3 Cem 27 FALSE
[1] 23 31 27 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
df <- data.frame(
stadt = c("HH", "M", "B"),
einwohner = c(1.8, 1.5, 3.7)
)
mean(df$einwohner) [1] 2.333333 Dateien einlesen
Je nach Format die passende Funktion — die Argumente sep (Trenner), dec
(Dezimalzeichen) und header sind entscheidend:
# 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:
d <- as.Date(c("2015-01-01", "2015-03-15"))
d[2] - d[1] # Differenz in Tagen
format(d, "%d.%m.%Y") # deutsches Format Time difference of 73 days
[1] "01.01.2015" "15.03.2015" Merke: Erst
str()nach dem Einlesen! Falschesep/dec-Argumente führen dazu, dass Zahlenspalten alscharacter(Text) landen und Rechnungen scheitern.
Abruf-Quiz
Frage 1 / 2Womit greift man auf die Spalte „Alter" eines Data-Frames df zu?