3 Grundlagen

3.1 Fundamentale Datentypen in R

In R existieren verschiedene atomare Datentypen aus welchen sich wiederum komplexere Datentypen konstruieren lassen.

In R existieren verschiedene atomare Datentypen aus welchen sich wiederum komplexere Datentypen konstruieren lassen.

Datentyp Beschreibung Beispiel
integer ganze Zahlen -2L
numeric reelle Zahlen 5.2456
logic logische Werte TRUE, FALSE
character Zeichenfolge ‘a’, “Mexico”

Textelemente müssen immer in Anführungszeichen stehen, also entweder “…” oder ‘…’

In R können manche atomare Datentypen besondere Ausprägungen annehmen.

Datentyp Ausprägung Bedeutung
numeric NaN “Not a Number”
numeric Inf Unendlich
logic NA Unbestimmt
NULL NULL Leer

3.1.1 Umformung

Gelegentlich kommt es vor, dass beim Import von Datensätzen die Daten im falschen Format übernommen werden, diese können wieder umgeformt werden

character \(\rightarrow\) numeric

as.numeric("2")
[1] 2

logical \(\rightarrow\) numeric (FALSE = 0, TRUE = 1)

as.numeric(TRUE)
[1] 1

numeric \(\rightarrow\) character

as.character(2024)
[1] "2024"

numeric \(\rightarrow\) logical (0 = FALSE, jede andere Zahl = TRUE)

as.logical(5)
[1] TRUE

3.2 R als Taschenrechner

3.2.1 Dezimalstellen und Leerzeichen

  • Dezimalzahlen werden in R mit einem Punkt und nicht mit einem Komma angegeben
2,5
Error: <text>:1:2: unexpected ','
1: 2,
     ^
2.5
[1] 2.5
  • Die Anzahl von Leerzeichen zwischen Befehlsbestandteilen ist (mit Ausnahmen) egal

3.2.2 Mathematische Operatoren

R- Befehl Bedeutung
+ Addition
- Subtraktion
* Multiplikation
/ Division
^ Potenz
sqrt(x) Wurzel
log(x, base) Logarithmus

Wichtig: Klammersetzung und Punkt vor Strich

3.2.2.1 Beispiele

3+2*8
[1] 19
(2*10)/(2*2.5)
[1] 4
sqrt(2)^2
[1] 2
log(100000, base=10)
[1] 5

3.2.3 Logische Operatoren

R Befehl Bedeutung
== Gleich
> Größer
< Kleiner
>= Größer gleich
<= Kleiner gleich
!= Nicht-gleich
& logisches UND
| logisches ODER

3.2.3.1 Beispiele

4<5
[1] TRUE
23!=24
[1] TRUE
10<=4 | 12==6
[1] FALSE
!("a"<"b" & TRUE==TRUE)
[1] FALSE

3.3 Variablen und Objekte

3.3.1 Abspeichern von Variablen

  • Werte können in Variablen (Objekten) gespeichert werden
x <- 5 + 3
  • Objekte sind nach der Zuweisung mit ihrem Namen abrufbar
x
[1] 8
  • Gespeicherte Objekte können weiterverwendet werden
x <- 5
x + 10
[1] 15
y <- 2 * 3
y + x
[1] 11
z <- y + x
z
[1] 11
  • Es können alle möglichen Elemente in Objekten gespeichert werden
    • Text:
z <- "Textelement"
z
[1] "Textelement"
  • logische Werte:
y <- 5 < 4
y
[1] FALSE

3.3.2 Hinweise zur Benennung

  • R unterscheidet Groß- und Kleinschreibung:
    • X und x sind nicht das Gleiche
  • Variablennamen dürfen nur Buchstaben, Zahlen, Unterstrich und Punkt enthalten
  • Variablennamen sollten keine Leerzeichen enthalten
  • Umlaute und ß wenn möglich vermeiden
  • Variablennamen dürfen nicht mit einer Zahl oder einem Unterstrich beginnen
7b <- 5+5
Error: <text>:1:2: unexpected symbol
1: 7b
     ^

3.3.3 Enviroment

  • Gespeicherte Objekte sind im Workspace (Environment) mit zusätzlichen Informationen aufgelistet
  • Objekte können durch das Kästchen ausgewählt und durch das Besensymbol gelöscht werden

3.3.3.1 Befehle für Zugriff auf Environment:

  • ls() listet in der R-Konsole den Workspace auf
  • Mit rm("objektname1","objektname2") werden Objekte entfernt
  • Mit rm(list = ls()) werden alle Objekte entfernt

3.4 Funktionen

Woraus besteht eine Funktion?

  • R beinhaltet eine große Menge an Grundfunktionen
  • Allgemeine Struktur: Funktion(Argument1, Argument2, …)
  • Die Argumente definieren und spezifizieren die Funktion
  • Beispiele für einfache Funktionen (hier nur ein Argument):
    • sqrt(x) berechnet Quadratwurzel
    • mean(X) berechnet Mittelwert eines Vektors

3.4.1 Funktionen mit mehreren Argumenten

  • c(Argument1, Argument2, Argument3) definiert einen Vektor mit drei Werten (z.B. Spaltennamen)
c(1,2,3,4,5)
[1] 1 2 3 4 5
c("Hund","Katze","Maus")
[1] "Hund"  "Katze" "Maus" 
  • round(x, digits = 2) rundet x auf 2 Nachkommastellen
round(3.141593, digits = 2)
[1] 3.14

3.4.2 Default-Werte in Funktionen

  • Nicht alle Argumente von Funktionen müssen angegeben werden
  • Diese optionalen Argumente nehmen dann default-Werte ein
  • Beispielsweise bei round() ist der Default-Wert digits = 0
  • default-Werte können in R Documentation nachgesehen werden (s. Help-Funktion)
round(3.141593)
[1] 3
  • Die Argumente müssen nicht explizit benannt werden
round(3.141593,2)
[1] 3.14
round(2,3.141593)
[1] 2
  • Dann ist aber die Reihenfolge wichtig, in der die Werte der Argumente eingegeben werden
  • Benennen ist allerdings nachvollziehbarer (hilft, Fehler zu vermeiden)

3.4.3 Exkurs: Help-Funktion

  • Durch die Funktion help() und ? lässt sich unter anderem herausfinden, welche Funktion welche Argumente benötigt
help(round)
?round

3.4.4 Abspeichern von Output einer Funktionen

  • Die Ergebnisse von Funktionen können ebenfalls unter Objekten abgespeichert (und weiterverwendet) werden
x <- c(1,2,3,4,5)
x
[1] 1 2 3 4 5
r <- round(3.141593,2)
r+5
[1] 8.14

3.5 Datenstrukturen

Übersicht

3.5.1 Vektoren

  • eindimensionale Datenstruktur, in dem mehreren Elemente enthalten sind
  • können im Enviroment als Objekt abgespeichert werden
  • Mathematische und logische Operatoren können auf den Vektor (auf alle Elemente) angewandt werden
x <- c(1,2,3,4,5)
x+1
[1] 2 3 4 5 6
x>3
[1] FALSE FALSE FALSE  TRUE  TRUE

Durch eckige Klammern [] können durch Angabe ihrer Position einzelne Elemente eines Vektors ausgewählt (indiziert) werden.

(Wichtig: in R beginnt der Index immer mit 1)

y <- c(110,120,130,140,150)
y
[1] 110 120 130 140 150
y[3]
[1] 130
y[c(1,3,5)]
[1] 110 130 150

Die Elemente können auch aufgrund von gewissen Bedingungen ausgewählt werden

y <- c(110,120,130,140,150)
y
[1] 110 120 130 140 150
y[y>=130]
[1] 130 140 150
y[y==120]
[1] 120

Steht ein negatives Vorzeichen vor dem Index, so wird jedes Element außer dem indizierten aus dem Vektor ausgewählt

x <- c(1,2,3,4,5)
x
[1] 1 2 3 4 5
x[-3]
[1] 1 2 4 5
x[c(-1,-3)]
[1] 2 4 5

Soll eine gewisse Reihe von angrenzenden Elementen (von Element i bis Element j) vektorisiert werden, werden die Indizes mit : verbunden (also i:j).

x <- c(1:5)
x
[1] 1 2 3 4 5
x[1:3]
[1] 1 2 3

3.5.2 Matrizen

  • Zweidimensionale Datenstruktur
  • Matrizen werden in R mit matrix(data = …, nrow = …, ncol = …, byrow = …) erstellt
    • data ist ein Vektor, der die Elemente der Matrix enthält
    • nrow definiert die Anzahl der Zeilen der Matrix
    • ncol definiert die Anzahl der Spalten der Matrix
    • Wird die Matrix zeilenweise (byrow = TRUE) oder spaltenweise (byrow = FALSE) mit den Elementen befüllt?
d <- c(1:9)
m <- matrix(data = d, nrow = 3, ncol = 3, byrow = TRUE)
m
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

Die Auswahl von Matrixelementen ist analog zu der Auswahl von Elementen aus einem Vektor

  • Allerdings wird bei einer Matrix ein Element durch zwei Positionen (Zeile und Spalte) definiert
m
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
m[3,2]
[1] 8
  • Sollen alle Spalten in einer bestimmten Zeile ausgewählt werden, bleibt der Spaltenindex leer
  • Analog für die Auswahl aller Zeilen in einer bestimmten Spalte
  • Negative Indizierung und Mehrfachauswahl auch möglich
m
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
m[3,]
[1] 7 8 9
m[,2]
[1] 2 5 8

3.5.3 Dataframes

  • Ein Dataframe ist eine Datenstruktur ähnlich zur Matrix
  • jede Spalte beinhaltet Werte einer Variable und jede Reihe Werte von jeder Variable (Spalten müssen gleichlang sein)
  • Data Frames können mit data.frame() aus mehreren (gleichlangen) Vektoren erstellt werden
alter <- c(16,17,15,22)
geschlecht <- c("w","w","m","m")
dataframe <- data.frame(alter, geschlecht)
dataframe
  alter geschlecht
1    16          w
2    17          w
3    15          m
4    22          m

Verschieden Möglichkeiten für Elementauswahl

  • Zeilen- und Spaltennummer (analog zu Matrizen)
dataframe[2,1]
[1] 17
  • oder mithilfe des $} operators direkt auf Variablen zugreifen
dataframe$alter
[1] 16 17 15 22
dataframe$alter[2]
[1] 17
  • Mit dem \$ Operator können zudem einzelne Werte verändert werden
dataframe$geschlecht[2] <- "m"
  • … oder ganze Variablen gelöscht werden
dataframe$geschlecht <- NULL

** Um festzustellen, ob die Veränderungen funktioniert haben, muss nicht immer das Objekt extra in der Konsole aufgerufen werden. Es reicht im Enviroment zu schauen ob sich das Objekt entsprechend verändert hat.**

  • Desweiteren können auch neue Variablen hinzugefügt werden
dataframe$aktuellesJahr <- rep(2022, times = 4)
  • …oder aus bestehenden Variablen gebildet werden
dataframe$geburtsjahr <- dataframe$aktuellesJahr - dataframe$alter
dataframe
  alter aktuellesJahr geburtsjahr
1    16          2022        2006
2    17          2022        2005
3    15          2022        2007
4    22          2022        2000

3.6 Packages

  • R besteht aus einer Reihe von vorinstallierten Grundfunktionen
  • Zusätzliche Funktionen erhält man durch externe Pakete (packages)
  • Diese müssen heruntergeladen und eingebunden werden
Anzahl R Packages
Anzahl R Packages

3.6.1 Installieren von Packages

  • library(): Auflistung aller bereits installierten Pakete
  • install.packages("NameDesPakets")1: Paket installieren (einmalig), Internetverbindung benötigt
  • library(NameDesPakets): Laden eines Pakets (in jeder R-Sitzung nötig)

  1. !Hier unbedingt in Anführungszeichen↩︎