12  Datentypen

Wir haben in den letzten Kapiteln bereits die (atomaren) Datentypen logical, integer, double und character kennengelernt. An der Datentabelle nycflights sehen wir, dass es noch weitere Typen gibt. Wir wollen in diesem Kapitel ein wenig Struktur in die Datentypen bringen und die atomaren Datentypen von den zusammengestzten Daten, die wir auch Datenstrukturen nennen abgrenzen.

12.1 Atomare Datentypen

In der Tabelle 17.2 sind die sechs atomaren Datentypen mit den Kurznamen, wie sie in einem Tibble auftauchen, sowie Beispielen aufgeführt.

Tabelle 12.1: In R gibt es sechs verschiedene atomare Datentypen. Alle anderen Datentypen bzw. Datenstrukturen werden aus diesen zusammengesetzt. Der Typ raw ist nur der Vollständigkeit aufgeführt und wird im Wesentlichen nicht benötigt. Der raw-Typ sind nicht interpretierte Speicherwerte.
Name Kurzname Erklärung Beispiele
logical <lgl> Logischer Ausdruck TRUE, T, FALSE, F
integer <int> ganze Zahlen 2, 4L, -7
double <dbl> Fließkommazahlen 1.2, pi, 3e-7
complex <cpl> Komplexe Zahlen 2+3i, 0-1i
character <chr> Zeichenketten "Haus", "K2", "110_112"
raw <raw> Rohdaten (Byte-Darstellung) (selten!) as.raw(255)

Vektoren sind die zugrunde liegende Strukturform in der Daten
Mit der Funktion typeof() können wir bei einem R-Objekt den Datentyp herausfinden.

u <- c("Angela", "Pamela", "Sandra", "Rita")
v <- c(1.2, pi, -0.12)
w <- c(1L, 3L, -4L)
x <- c(TRUE, FALSE, NA)

typeof(u)
[1] "character"
[1] "double"
[1] "integer"
[1] "logical"

12.1.1 Die Funktionen is.<datentyp>()

x is.numeric() is.integer() is.logical() is.character() is.na()
2.9 TRUE FALSE FALSE FALSE FALSE
0 TRUE FALSE FALSE FALSE FALSE
4L TRUE TRUE FALSE FALSE FALSE
0L TRUE TRUE FALSE FALSE FALSE
TRUE FALSE FALSE TRUE FALSE FALSE
FALSE FALSE FALSE TRUE FALSE FALSE
“A” FALSE FALSE FALSE TRUE FALSE
“TRUE” FALSE FALSE FALSE TRUE FALSE
“FALSE” FALSE FALSE FALSE TRUE FALSE
NA FALSE FALSE TRUE FALSE TRUE

12.1.2 Die Funktionen as.<datentyp>()

x as.numeric() as.integer() as.logical() as.character()
2.9 2.9 2L TRUE “2.9”
0 0 0L FALSE “0”
4L 4 4L TRUE “4”
0L 0 0L FALSE “0”
TRUE 1 1L TRUE “TRUE”
FALSE 0 0L FALSE “FALSE”
“A” NA NA NA “A”
“TRUE” NA NA TRUE “TRUE”
“FALSE” NA NA FALSE “FALSE”
NA NA NA NA NA

12.2 Kategoriale und geordnete Typen

(Geordnete) Faktoren benötigt man immer dann, wenn es für ein Merkmal endlich viele bekannte und feste Ausprägungen, den Levels, gibt. Wir weden uns in Kapitel 15 noch damit beschäftigen.

Name Kurzname Erklärung Beispiele
factor <fct> Kategoriale Merkmale mit festen Levels "rot", "blau", "grün"
ordered <ord> Geordnete kategoriale Merkmale "klein" < "mittel" < "groß"

12.3 Zeitbezogene Typen

Name Kurzname Erklärung Beispiele
📅 date <date> Datum (ohne Zeit) as.Date("2023-09-22")
⏰ datetime <dttm> Datum und Uhrzeit (POSIXct) asPOSIXct("2025-10-21 11:20:00")
⏳ difftime <difftime> Zeitdifferenz zwischen zwei Daten/Zeitpunkten difftime(Sys.time(), start)
📈 ts (time series) <ts> Zeitreihenobjekt mit fester Frequenz ts(1:10, start=2020, freq=4)

12.4 Zusammengesetzte Datenstrukturen

Name Kurzname Erklärung Beispiele
📚 list <list> Sammlung beliebiger Objekte (heterogen) list(1, "a", TRUE)
🧮 matrix <mtrx> 2D-Array gleichen Datentyps matrix(1:6, ncol=2)
🧊 array <arr> Mehrdimensionale Datenstruktur gleichen Typs array(1:8, dim=c(2,2,2))
📊 data.frame <df> Tabellarische Struktur mit Spalten unterschiedlichen Typs data.frame(x=1:3, y=c("a","b","c"))
📘 tibble <tbl> Moderne Variante von data.frame (tidyverse) tibble(x=1:3, y=c("a","b","c"))