Tipps
Vorwarnung
Achtung! Im Folgenden geben wir dir ein paar Tipps, die auch Teile der Lösung enthalten können. Deshalb sollten diese nur dann benutzt werden, wenn du bei einer Aufgabe nicht weiterkommst.
Tipp 1
Hier geht es nicht nur um das Zusammenfügen der Datensätze, sondern auch wichtige Vorüberlegungen.
Tipp anzeigen
Natürlich könntest du die beiden Datensätze direkt zusammenfügen, doch dann stößt man auf ein Problem. Das Datum sowie auch die Werte der Referenzkategorie (in unserem Fall die AfD) treten in beiden Datensätzen auf. Fügt man beide Datensätze nun zusammen, kämen beide Variablen doppelt und jeweils mit der gleichen Bezeichnung vor. Das heißt, dass du die Spalte “AfD” in einem der beiden Datensätze direkt löschen musst. Eine andere Möglichkeit wäre, dass du irgendwie dafür sorgst, dass sich die beiden Variablen in ihrem Namen unterscheiden, sodass sie im zusammengefügten Datensatz ein Mal gelöscht werden kann.
Sofern dir dazu eine Lösung eingefallen ist, kannst du nun dazu übergehen, die beiden Datensätze aneinanderzufügen. Dafür ist es am einfachsten die beiden “aneinanderzuhängen” anstatt sie “zusammenzufügen”. Das kannst du mit dem cbind
-Befehl in R erreichen. Schau dir diesen Befehl am besten in der R-Hilfefunktion an.
Falls du den Befehl nicht verstehst, folgt hier eine kurze Erklärung des Befehls:
Datensatz <- cbind("Datensatz_A","Datensatz_B")
Voraussetzung für das Funktionieren dieses Befehls in unserem Beispiel ist, dass die Anzahl der Zeilen beider Datensätze übereinstimmt. Als Output erhält man einen Datensatz
, bei dem Datensatz_B
“hinten” an Datensatz_A
angehängt wurde.
Tipp 2
Dieser Tipp befasst sich mit notwendigen, vorbereitenden Schritten der Datenaufbereitung und behandelt die Anpassung der Variablenart.
Teil 1 anzeigen
Hier stellt sich die Frage: Liegen alle Daten in der Variablenart vor, die man benötigt? Die Variablenart jeder Variable (Spalte) lässt sich mit folgendem Befehl abfragen:
class(Variablenname)
Hier bekommt man also eine Angabe zum Typ der Variablen. Wie du im R Crash Kurs nachlesen kannst, sind Zahlen zum Beispiel als numeric
(oder abgekürzt num
) abgelegt. Im besonderen Fall, dass eine numerische Variable nur ganze Zahlen enthält, wird sie als integer
(kurz: int
) abgelegt. Es handelt sich aber nach wie vor um eine Zahl. Unser Ziel ist, dass alle Variablen im Typ int
oder num
vorliegen, sodass R diese auch als Zahlenwerte erkennt.
Teil 2 anzeigen
Im Rohdatensatz kann man erkennen, dass die “<1” weder integer
noch numeric
sind. Dadurch erkennt R all jene Variablen (Spalten), in denen “<1” mindestens ein Mal vorkommt, nicht als Zahlen. Deshalb müssen wir diese “<1” irgendwie durch “0” ersetzen.
Ziel ist also, dass im zusammengesetzten Datensatz, überall wo zuvor der Wert “<1” stand, eine Null steht. Um das zu erreichen, kannst du die Daten entweder hinterher bearbeiten oder diese Besonderheit direkt beim Einlesen mit read.table
berücksichtigen. Dort kannst du mit einem Argument die Kodierung fehlender Werte festlegen. So gelangst du der Umwandlung von “<1” zu “0” einen Schritt näher.
Tipp 3
Hier geht es um die notwendige Umstrukturierung der Daten für die Nutzung in ggplot
.
Tipp anzeigen
Das Ziel der Umformung ist, dass eine Zeile des Datensatzes aus Datum, Partei und Prozentzahl besteht. Dadurch erhält man einen Datensatz aus 1710 Zeilen und 3 Spalten.
Dafür kann man den reshape
-Befehl benutzen:
langer_Datensatz <- reshape(Datensatz, varying = ...,
v.names = ..., timevar = ...,
idvar = ..., times = ...,
direction = "long")
varying
: Vektor mit den Spaltenbezeichnungen im vorhandenen Datensatz.
v.names
: gemessene Größe (Werte), die von mehreren Spalten in eine Spalte übertragen werden sollen.
timevar
: Bezeichnung für die Variable, die alle Spaltennamen enthält.
times
: Die vorherigen Variablennamen (Spaltennamen), die nun Werte einer durch timevar bezeichneten Variable sind.
idvar
: Name der Variable, die die einzelnen Messwerte einer Gruppe (Spalte) auseinanderhält.
direction
: Bezeichnung des neuen Formats. Kann entweder “wide” oder “long” sein. Wir brauchen das “long”-Format.
Tipp 4
In diesem Tipp geht es um die Nutzung von ggplot
zur Erstellung einer Grafik. Bevor du dir diesen Tipp anguckst, kannst du dir auch noch die kurze Einführung in ggplot2 angucken, die wir geschrieben haben.
Tipp anzeigen
Wenn das Paket geladen ist, kann als Grundbefehl ggplot
genutzt werden. Dieser kann zunächst die unterste Ebene der Abbildung (die Daten) als Argument entgegennehmen:
ggplot(data = Datensatz)
Weil wir daran interessiert sind, bestimmte Variablen abzubilden, können wir diese in der Abbildung “mappen” oder abbilden:
ggplot(data = Datensatz, mapping = aes(x = ..., y = ..., group = ...))
Diese “Aesthetics” dienen dazu, zu definieren wie die Variablen im Diagramm dargestellt werden. Dafür können wir festlegen, welche Variable auf der x-Achse und welche auf der y-Achse dargestellt wird. Zusätzlich können wir über group
auch noch eine Gruppierung der \((x, y)\) Kombinationen festlegen und diese zum Beispiel später benutzen, um unterschiedlichen Daten unterschiedliche Farben zu geben, um diese Gruppen optisch leichter voneinander unterscheiden zu können.
Zusätzlich zu dieser Basis muss noch durch ein geom
festgelegt werden, wie die Daten anzeigt werden sollen, die wir abbilden. Weil es sich um Zeitverläufe dreht, bietet sich ein Liniendiagramm an! Für die Farbe der Linien können wir die Gruppierungsvariable direkt wieder benutzen!
geom_line(aes(colour = ...))
Tipp 5
In diesem Tipp geht es darum, eine “richtige” Datumsvariable zu erstellen. Die Überführung der Datumsvariable im Datensatz in eine solche Datumsvariable, die auch von R intern als Datum repäsentiert wird, erfordert einige Schritte, von denen ein paar nicht ganz intuitiv sind.
Schritt 1 anzeigen
Um die Daten in eine neue Klasse überführen zu können, müssen sie zunächst als character vorliegen. Erstelle dafür eine zweite Datumsvariable, in der das der Fall ist.
Schritt 2 anzeigen
Unser Ziel ist, dass R diese neu erstellte Variable als Datum erkennt. Dafür gibt es in R eine Klasse mit dem Namen POSIXct
. Für die Umwandlung character
zu POSIXct
oder POSIXlt
gibt es einen bestimmten Befehl. Such diesen im Internet und schau dir dann die Hilfefunktion in R dazu an.
Schritt 3 anzeigen
Falls du diesen Befehl nicht findest - so sieht der benötigt Befehl aus: strptime(x, format = "")
. x
ist in diesem Fall die Variable, die umgewandelt werden soll und das format
übermittelt R, wie die Daten momentan aussehen. Der Befehl funktioniert so jedoch noch nicht. Woran könnte das liegen? Schau dafür in die R-Hilfe zum Argument format
.
Schritt 4 anzeigen
Das Problem liegt in den vorliegenden Daten. R kann diese Umwandlung nur mit einem character
vornehmen, der mindestens Jahr, Monat und Tag enthält. Diese werden in der Hilfe von strptime
je nach Formatierung unterschiedlich bezeichnet - z.B. wird %d
für den Tag (01 - 31), %m
für den Monat (01 - 12) und %y
für das Jahr (00-99) genutzt. Unseren Daten fehlt der Tag! Um die Umwandlung vornehmen zu können, muss man also die Daten modifizieren. Schau dir dafür mal den Befehl paste0
in der R-Hilfefunktion und im Internet an.
Schritt 5 anzeigen
paste0
“klebt” die Argumente, die der Funktion gegeben werden aneinander. Die 0
bedeutet dabei, dass sie durch nichts getrennt werden sollen. Z.B. könnten wir den Befehl benutzen um einen beliebigen Satz zu schreiben:
paste0('Ich will', ' Kuchen.')
## [1] "Ich will Kuchen."
In paste0
können aber auch Variablen genutzt werden, um jeder Beobachtung etwas hinzuzufügen. In unserem Fall müssen wir uns also einfach nur irgendeinen Tag im Monat aussuchen und diesen an unsere Datumsvariable anheften.
Schritt 6 anzeigen
Ist die Variable ein “POSIXct”? Überprüf das mit dem Befehl class(Variable). Sofern nicht, schau im Internet nach einer Lösung für das Problem.
Ergebnis: Kopiere den Befehl reshape- und den ggplot-Befehl und ersetze jeweils die alte Monatsvariable (Variablentyp: “factor”) durch die neue Monatsvariable (Variablentyp: “POSIXct”). Jetzt sollte die Graphik auf der x-Achse nur noch mit den 4 Jahreszahlen 2005, 2010, 2015 und 2020 beschriftet sein.