c("Auto", TRUE, 1)
c(5, 2, 1, TRUE, FALSE)
rep(c(4,5,6), c(1,2,3))
rep(1:4, each = 3)
1 + 1:2 + 1:4 + 1:8Aufgaben 3
Aufgabe 3.1: Grundlagen R
Geben Sie eine möglichst einfache Funktion / Operation an mit der Sie die folgenden Vektoren erstellen können.
- Eine Zahlenfolge von 100 bis 250 in 3er Schritten.
- 30 mal die 5 und danach 20 mal eine 7.
- 17 äquidistante Zahlen zwischen 10 und 15.
- Die Zahlenfolge (4, 7, 12) sechs mal hintereinander.
- Die Zahlen 4, 7 und 12 jeweils sechs mal hintereinander.
Erklären Sie die Ausgaben der folgenden Zeilen. Überlegen Sie sich vor dem Ausprobieren wie das Ergebnis aussehen könnte.
Aufgabe 3.2: EDA - Zweiter Teil
Betrachten Sie erneut die Datentabelle diamonds.
Welches Merkmal in der Datentabelle
diamondsist am besten dazu geeignet, den Preis eines Diamanten vorherzusagen? Wie ist diese Variable mit dem Schliff (cut) korreliert? Weshalb lässt sich aus der Kombination dieser beiden Beziehungen ableiten, dass Diamanten mit schlechterem Schliff teurer sind?Hinweis: Um einen ersten Überblick über die Zusammenhänge der Merkmale in der Datentabelle zu erhalten, empfehle ich Ihnen die Funktion
ggpairs()aus der BibliothekGGally. Da in derdiamonds-Datentabelle über 50 000 Diamanten erfasst sind, empfehle ich Ihnen außerdem vor Ausführung des Befehlsggpairs()je nach Leistungsfähigkeit Ihres Rechners eine Stichprobe von 500, 1000 oder 5000 Diamanten zu ziehen. Zum Beispiel:library(pacman) p_load(tidyverse, GGally) set.seed(101) # damit man jedes Mal die gleiche Stichprobe erhält, die Zahl ist egal! diamonds500 <- diamonds |> slice_sample(n = 500) ggpairs(diamonds500) # dauert nur wenige SekundenStellen Sie die Verteilung des Merkmals Preis in Abhängigkeit des Schnitts
mit dem geometrischen Objekt
geom_violin(),mit in Facetten gegliederten Histogrammen und
mit einem verschieden farbigen geometrischen Objekt
geom_freqpoly()dar.
Was sind die Vor- und Nachteile jeder Methode?
Aufgabe 3.3: Daten transformieren
Laden Sie das Paket DA.students und betrachten Sie die Datentabelle dat.studenten.
- Definieren Sie die neuen Merkmale:
DiffAlterMut,DiffAlterVat,DiffAlterMV, die den Altersunterschied der Befragten zur Mutter, zum Vater und die Differenz zwischen dem Alter des Vaters und der Mutter enthalten. - Benennen Sie die beiden Merkmale
DiffAlterMut,DiffAlterVatum inDiffAlterMbzw.DiffAlterV. - Sortieren Sie die Daten absteigend nach der größten Differenz zwischen dem Alter des Vaters und der Mutter.
- Ermitteln Sie die sieben kleinsten Frauen und die sieben kleinsten Männer.
Aufgabe 3.4: Graph einer Funktion
In dieser Aufgaben sollen Sie Graphen von mathematischen Funktionen mit R erzeugen.
Gegeben sind die drei Funktionen
\[\begin{aligned} f(x) = \mathrm{e}^x, \qquad g(x) = \ln(x), \end{aligned}\]
sowie die Winkelhalbierende \(h(x) = x\).
- Erstellen Sie eine Datentabelle mit der Sie die obigen Funktionen im Intervall \([-3, 3]\) mit ggplot2 darstellen können.
- Erstellen Sie nun eine Grafik in der die Graphen aller drei Funktionen zu sehen sind.
- Färben Sie die Graphen und zeichen sie diese mit einer etwas dickeren Strichstärke als dem Standard.
- Schauen Sie sich nun die erzeugte Datentabelle an. Was fällt auf?
Der Logarithmus ist die Spiegelung der Exponenatialfunktion an der Winkelhalbierenden, da es Umkehrfunktionen voneinender sind. In der Grafik, die Sie eben erstellt haben ist das aufgrund der Skalierung (die \(y\)-Achse ist gestaucht) nicht zu sehen.
- Mit welcher Funktion (aus dem ggplot-Unmiversum) können Sie die Koordinaten nun so zurechtschneiden, dass das Koordinatensystem in \(x\)- wie \(y\)-Richtung die gleiche Dimension hat (z.B. jeweils von -3 bis 3)?
Aufgabe 3.5: Farben in R
In R gibt es viele Möglichkeiten die Farben von Grafiken zu verändern. Die wichtigste wird durch das Paket colorspace zur Verfügung gestellt, das eine Vielzahl von wichtigen Farbpaletten bereitstellt. Dies soll jedoch später in einer eigenen Aufgabe besprochen werden.
Farben werden durch Zeichenketten der Form #RRGGBB bzw. #RRGGBBAA repräsentiert, wobei RR für einen Rotwert, GG für einen Grünwert und BB für einen Blauwert stehen. Das nicht notwendige, aber mögliche AA steht für einen Alphawert, der die Transparenz kodiert. Alle Werte werden im Hexadezimalsystem angegeben, das heißt sie gehen von 00 bis FF.
# Pakete laden:
library(pacman)
p_load(tidyverse, patchwork)g1 <- mpg |> ggplot(aes(x = cty, y = hwy)) +
geom_point(color = "#0000FF") # blau
g2 <- mpg |> ggplot(aes(x = displ, y = hwy)) +
geom_point(color = "#FF000033") # rot transparent
g3 <- mpg |> ggplot(aes(x = displ, y = cty)) +
geom_point(color = "#FFAA00") # orange
(g1|g2|g3)
Vordefinierte Farben:
In R gibt es 657 vordefinierte Farben, die einen Namen haben. Diese finden Sie im R Color Cheat Sheet (moodle). Alle Farbnamen kann man mit der folgenden Funktion sichtbar machen:colors() # insgesamt 657 Farbnamen, 502 verschiedenecolors()[1:12] # die ersten 12:[1] "white" "aliceblue" "antiquewhite" "antiquewhite1" [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine" [9] "aquamarine1" "aquamarine2" "aquamarine3" "aquamarine4"In der folgenden Grafik sind alle vordefinierten Farben zu sehen. Die Zahl an der \(x\)-Achse entspricht der Stelle im Vektor
colors().

Die Funktion
rgb():Mit Hilfe der Funktion
rgb(), was für red, green, blue steht, können Farben auf einfache Weise generiert werden: die Argumente der Funktion sindred,green,blue,alpha,names = NULLundmaxColorValue = 1. Diese können vektoriell verwendet werden, um eine ganze Palette von Farben zu erzeugen. Dabei variieren nun die Werte standardmäßig zwischen 0 und 1, können aber aber durch Ändern des ArgumentsmaxColorValueauch zwischen 0 und einem beliebigen anderen Wert (oft wird der Wert 255 verwendet) variieren.Durch diese Parametrisierung erhält man einen Farbwürfel, dessen Ecken und Kanten im Bild rechts zu sehen sind. Die Diagonale, bei der die R-,G- und B-Werte jeweils gleich sind, enthält die Grautöne.

die Funktion
hsv():Analog zur Funktion
rgb()können mit der Funktionhsv(), was für hue, saturation, value steht, Farben definiert werden. Die Argumente der Funktion sindh = 1,s = 1,v = 1, sowiealpha, der Transparenz. Alle Argumente sind Zahlenwerte aus dem Intervall \([0, 1]\). Im Gegensatz zum RGB-Farbraum sind der HSV-Farbraum und auch der HCL-Farbraum auf die Wahrnehmung des Menschen ausgelegt. Diese beiden Farbräume eignen sich daher deutlich besser für Grafiken.
die Funktion
hcl():
Auch mit der Funktionhcl(), was für hue, color, luminance steht, können Farben definiert werden. Die Argumente der Funktion sindh = 0aus \([0, 360]\),c = 35,l = 85aus \([0, 100]\),alphaaus \([0, 1]\), der Transparenz undfixup = TRUE. Welchen Wertcannehmen kann, hängt vonhundlab. Das Paketcolorspacebasiert auf dem HCL-Farbraum und bietet optimale Werkzeuge um Farbpaletten zu erzeugen.
Welche Farben werden in den Vektoren
r1undr2erzeugt?(r1 <- rgb(seq(0, 1, 0.1), 0, 1))[1] "#0000FF" "#1A00FF" "#3300FF" "#4D00FF" "#6600FF" "#8000FF" "#9900FF" [8] "#B300FF" "#CC00FF" "#E600FF" "#FF00FF"r2 <- rgb(seq(0,1,0.1), seq(0,1,0.1), seq(0,1,0.1))Überlegen Sie sich das Ergebnis anhand der Grafik zu den RGB-Farben.
Erzeugen sie mit der Funktion
hsv()jeweils einen Blau- und einen Gelbton. Variieren Sie das Argumentvvon 0 bis 1 und stellen Sie das Ergebnis in einer einfachen Grafik dar, zum Beispielbarplot(1:12, col = 1:12)
wobei natürlich die erzeugten Farben gewählt werden sollen.
Wie erzeugt man mit
hsv()die Grautöne?
Für die kommenden Aufgaben benötigen Sie das Paket DA.students.
Erzeugen Sie mehrere Farbvektor mit zwei nicht zu saturierter Farben. Erstellen Sie nun einen Boxplot bei dem das Geschlecht auf der \(x\)-Achse und die Anzahl der Schuhe auf der \(y\)-Achse aufgetragen werden. Färben Sie die Boxplots mit den von Ihnen generierten Farben.
Nutzen Sie sowohl die vordefinierten Farben als auch die Funktionen
rgb().Was macht die Funktion
rev()? Inwiefern hilft Ihnen das ggf. bei der Vergabe von Farben?
Bemerkungen:
Sowohl der HSV- als auch der HCL-Farbraum orientieren sich beide an der Wahrnehmung des Auges und sind daher prinzipiell besser für Grafiken geeignet, insbesondere wenn (kontinuierliche) Farbpaletten benötigt werden.
Für einfache Grafiken (zum Beipspiel einfach gefärbte Graphen, ggf. transparente einfarbige Streudigramme, ist auch die Funktion
rgb()gut geeignet.Häufig kommt es insbesondere bei kategorialen Daten vor, dass man Farbpaletten braucht, wobei nicht ohne weiteres klar ist, wie viele Farben benötigt werden (zum Beispiel Anzahl der Automarken im
mpg-Datensatz oder die Anzahl der Wohnformen imdat.studenten-Datensatz, etc.). Hier ist es notwendig einen anderen Weg zur Änderung der Farben zu wählen. Dies geschieht in der nächsten Aufgabe!