Post on 14-Jun-2020
transcript
R- Grundlagen
Stefan Heyder
07. März 2019
TU Ilmenau
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Warum R?
Ï KostenlosÏ Open-SourceÏ Programmiersprache⇝ Hoher Grad an KonfigurationsmöglichkeitenÏ CommunityÏ RStudio
Slide 1 of 18Einleitung
Base R vs. Tidyverse
Base RÏ StandardfunktionalitätenÏ Plot Fine-tuning (z.B. Veröffentlichung)Ï Organisch gewachsen
TidyverseÏ Sammlung von Paketen ( ggplot2, tibble, magrittr ...)Ï Fokus auf Syntax, Vereinheitlichung und sinnvolle Standards
Mehrere Möglichkeiten Probleme zu lösen!
Slide 2 of 18Einleitung
Base R vs. Tidyverse
Base RÏ StandardfunktionalitätenÏ Plot Fine-tuning (z.B. Veröffentlichung)Ï Organisch gewachsen
TidyverseÏ Sammlung von Paketen ( ggplot2, tibble, magrittr ...)Ï Fokus auf Syntax, Vereinheitlichung und sinnvolle Standards
Mehrere Möglichkeiten Probleme zu lösen!
Slide 2 of 18Einleitung
Base R vs. Tidyverse
Base RÏ StandardfunktionalitätenÏ Plot Fine-tuning (z.B. Veröffentlichung)Ï Organisch gewachsen
TidyverseÏ Sammlung von Paketen ( ggplot2, tibble, magrittr ...)Ï Fokus auf Syntax, Vereinheitlichung und sinnvolle Standards
Mehrere Möglichkeiten Probleme zu lösen!
Slide 2 of 18Einleitung
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
R als Taschenrechner
2 + 2
## [1] 4
1 - 2
## [1] -1
3.1234 * 111
## [1] 346.6974
3 / 5
## [1] 0.6
2 ^ 5
## [1] 32
Slide 3 of 18Arithmetik
Rechnen mit Restklassen
13 %/% 3
## [1] 4
13 %% 3
## [1] 1
pi %/% 3
## [1] 1
pi %% 3
## [1] 0.1415927
Weiteres zu Arithmetik in der Hilfe:
?Arithmetichelp(Arithmetic)
Slide 4 of 18Arithmetik
Rechnen mit Restklassen
13 %/% 3
## [1] 4
13 %% 3
## [1] 1
pi %/% 3
## [1] 1
pi %% 3
## [1] 0.1415927
Weiteres zu Arithmetik in der Hilfe:
?Arithmetichelp(Arithmetic)
Slide 4 of 18Arithmetik
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Funktionsaufrufe
log(32)
## [1] 3.465736
# R erlaubt Übergabe von Argumentnamenlog(32, base = 2)
## [1] 5
sin(pi)
## [1] 1.224647e-16
cos(pi)
## [1] -1
sqrt(10)
## [1] 3.162278
exp(1)
## [1] 2.718282
Slide 5 of 18Funktionen
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Wahr und Falsch
TRUE
## [1] TRUE
FALSE
## [1] FALSE
# AbkürzungT
## [1] TRUE
F
## [1] FALSE
Slide 6 of 18Logik
Logikverknüpfungen
TRUE & FALSE
## [1] FALSE
!TRUE
## [1] FALSE
!FALSE
## [1] TRUE
T | F
## [1] TRUE
1 > 2 | 2 > 1
## [1] TRUE
Slide 7 of 18Logik
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Zuweisung
# Zuweisungx <- 5# Ausgabex
## [1] 5
# Auch möglich, aber Vorsicht vor benannten Argumenten!x = 5# Ebenfalls möglich, aber schlechter Stil5 -> x
Slide 8 of 18Variablen
Namenskonventionen
Ï Name starten mit einem BuchstabenÏ Namen unterscheiden zwischen Groß- und Kleinbuchstaben
x <- 5X <- 4x == X
## [1] FALSE
Ï Namen können Buchstaben, Punkte, Zahlen oder Unterstriche enthalten. Verschieden Möglichkeiten langeVariablen zu benennen:
langer.variablen.namelanger_variablen_namelangerVariablenName
Slide 9 of 18Variablen
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Datentypen
Ï logical — TRUE oder FALSEÏ integer — GanzzahlenÏ numeric — GleitkommazahlenÏ complex — komplexe Zahlen z.B. 1+ iÏ character — Zeichenfolgen
Feststellen des Typs mit typeof
typeof(TRUE)
## [1] ”logical”
typeof(”string”)
## [1] ”character”
Slide 10 of 18Datentypen
Datentypen
Ï logical — TRUE oder FALSEÏ integer — GanzzahlenÏ numeric — GleitkommazahlenÏ complex — komplexe Zahlen z.B. 1+ iÏ character — Zeichenfolgen
Feststellen des Typs mit typeof
typeof(TRUE)
## [1] ”logical”
typeof(”string”)
## [1] ”character”
Slide 10 of 18Datentypen
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
Vektoren
Ï R ist Vektorbasiert!
# Erstellen einfacher Zahlenfolgec(1, 2, 3, 4, 5)
## [1] 1 2 3 4 5
# Vektoren sind eindimensionalc(1, c(2, c(3, 4), 5))
## [1] 1 2 3 4 5
1:30
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23## [24] 24 25 26 27 28 29 30
seq(1, 30, 1)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23## [24] 24 25 26 27 28 29 30
Ï Viele Funktion sind vektorisiert
sin(1:5)
## [1] 0.8414710 0.9092974 0.1411200 -0.7568025 -0.9589243
Slide 11 of 18Vektoren
Rechnen mit Vektoren
1:3 + 4:6
## [1] 5 7 9
1:3 * 4:6
## [1] 4 10 18
# Vektoren werden wiederholt!1:5 + 1
## [1] 2 3 4 5 6
1:6 + 1:3
## [1] 2 4 6 5 7 9
1:5 > 2
## [1] FALSE FALSE TRUE TRUE TRUE
sum(1:5)
## [1] 15
mean(1:5)
## [1] 3
Slide 12 of 18Vektoren
Vektoren und Datentypen
Vektoren bestehen immer aus Werten des gleichen Datentyps. Werden gemischte Datentypen angegeben, sowerden diese konvertiert
x <- c(TRUE, 2, 3)x
## [1] 1 2 3
typeof(x)
## [1] ”double”
x <- c(2, 4, ”5”)x
## [1] ”2” ”4” ”5”
typeof(x)
## [1] ”character”
# Konvertierungas.numeric(x)
## [1] 2 4 5
Slide 13 of 18Vektoren
Faktoren
Datentyp für kategorische Variablen mit festem Wertebereich
familienstand <- c(”ledig”, ”verheiratet”, ”ledig”, ”verheiratet”)familienstand <- factor(familienstand)familienstand
## [1] ledig verheiratet ledig verheiratet## Levels: ledig verheiratet
levels(familienstand)
## [1] ”ledig” ”verheiratet”
# Schlägt fehltfamilienstand[2] <- ”geschieden”
## Warning in ‘[<-.factor‘(‘*tmp*‘, 2, value = ”geschieden”): invalid factor level, NAgenerated
familienstand <- factor(familienstand, levels = c(levels(familienstand), ”geschieden”))familienstand[2] <- ”geschieden”familienstand
## [1] ledig geschieden ledig verheiratet## Levels: ledig verheiratet geschieden
Slide 14 of 18Vektoren
Elementzugriff
LETTERS
## [1] ”A” ”B” ”C” ”D” ”E” ”F” ”G” ”H” ”I” ”J” ”K” ”L” ”M” ”N” ”O” ”P” ”Q”## [18] ”R” ”S” ”T” ”U” ”V” ”W” ”X” ”Y” ”Z”
(x <- LETTERS[3])
## [1] ”C”
(x <- LETTERS[c(1:5, 1)])
## [1] ”A” ”B” ”C” ”D” ”E” ”A”
(x <- sample(1:20, 10, replace = TRUE))
## [1] 12 20 19 11 11 2 18 1 8 6
x < 10
## [1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE TRUE TRUE
which(x < 10)
## [1] 6 8 9 10
x[ x < 10 ]
## [1] 2 1 8 6
Slide 15 of 18Vektoren
Weiteres zu Vektoren
# Überprüfen ob Wert vorhanden istx <- 1:51 %in% x
## [1] TRUE
0 %in% x
## [1] FALSE
# Länge von Vektorenlength(x)
## [1] 5
names(x) <- c(”Erster”, ”Zweiter”, ”Dritter”, ”Vierter”, ”Fünfter”)x
## Erster Zweiter Dritter Vierter Fünfter## 1 2 3 4 5
x[”Zweiter”]
## Zweiter## 2
Slide 16 of 18Vektoren
Einleitung
Arithmetik
Funktionen
Logik
Variablen
Datentypen
Vektoren
Fehlende Daten (NA)
NA
Ï Fehlende Daten werden mit NA erfasst.Ï Da NA für fehlende Daten Stehen, können zwei NA Instanzen unterschiedlich sein. Das erklärt diese Ausgabe:
NA == NA
## [1] NA
Ï Um zu überprüfen, ob eine Variable NA ist, verwendet man is.na:
x <- c(1,2,3,NA,5,NA,7,NA, 5, 3, 7)is.na(x)
## [1] FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
# Wie viele NA sind in x?sum(is.na(x))
## [1] 3
# Wo stehen die NA?which(is.na(x))
## [1] 4 6 8
Slide 17 of 18Fehlende Daten (NA)
Verhalten von NA
Ï NA kann Verhalten von Funktionen beeinflussen:
mean(x)
## [1] NA
sd(x)
## [1] NA
table(x)
## x## 1 2 3 5 7## 1 1 2 2 2
mean(x, na.rm = T)
## [1] 4.125
sd(x, na.rm = T)
## [1] 2.232071
table(x, useNA = ”ifany”)
## x## 1 2 3 5 7 <NA>## 1 1 2 2 2 3
Slide 18 of 18Fehlende Daten (NA)