1. Einleitung

Nachdem in der letzten Sitzung eine Einführung in R als statistisches Datenanalyseprogramm gegeben wurde, wollen wir uns ab dieser Sitzung auf die Arbeit mit Datensätzen konzentrieren. Bevor wir uns in Sitzung 3 mit den Datensätzen dieses Kurses beschäftigen, wollen wir uns in dieser Sitzung einen Überblick über die zweidimensionalen Objektklassen Matrix und Dataframe verschaffen. Dataframes sind ein wichtiges Objekt in R, da fast alle Datensätze in diesem Format vorliegen. Außerdem lernen wir mit den Faktoren eine weitere eindimensionale Objektklasse kennen.

2. Matrizen

Matrizen sind Vektoren mit zwei Dimensionen. Im Gegensatz dazu haben Vektoren nur eine Dimension. Daten in Form von Matrizen sind wie in einer klassischen Tabelle in Zeilen und Spalten angeordnet. Dies hat zur Folge, dass innerhalb einer Matrix jede Zeile und jede Spalte gleich lang sein muss. Wäre eine Spalte oder Zeile länger oder kürzer, würde dies zu leeren Zellen innerhalb der Matrix führen. Dies würde R bei bestimmten Berechnungen stören. Im Allgemeinen verhalten sich Matrizen wie Vektoren. Dies bezieht sich insbesondere darauf, dass sie immer nur eine Klasse von Objekten enthalten können. Die Elemente einer Matrix können also z.B. entweder nur Zeichenvektoren oder nur Zahlenvektoren sein, aber niemals beides gleichzeitig.

2.1 Eine Matrix erstellen

Wir bilden eine Matrix in R so:

m <- matrix(data = 1:6, nrow = 2, ncol = 3)
m
1 3 5
2 4 6

Die Funktion matrix() enthält die Argumente data, das die Daten in der Matrix angibt, nrow (für “number of rows”), das die Anzahl der Zeilen angibt, und ncol (für “number of columns”), das die Anzahl der Spalten angibt. Die Matrix wird spaltenweise mit den angegebenen Werten gefüllt: 1 und 2 in der ersten Spalte, 3 und 4 in der zweiten Spalte und 5 und 6 in der dritten Spalte. Die Art und Weise, wie R beim Füllen der Matrix vorgeht, kann durch das Argument byrow bestimmt werden, dessen default, also die Voreinstellung FALSE ist. Wir setzen byrow auf TRUE. Nun füllt R die Matrix zeilenweise mit Werten, so dass 1, 2 und 3 in der ersten Zeile und 4, 5 und 6 in der zweiten Zeile stehen.

m <- matrix(1:6, nrow = 2, byrow = TRUE)
m
1 2 3
4 5 6

2.2 Zusammenbinden von Vektoren

Eine weitere Möglichkeit, Matrizen zu erstellen, ist das Zusammenbinden von Vektoren. Dazu verwendet man entweder cbind() (“column bind”) zum Verbinden von Spalten oder rbind() (“row bind”) zum Verbinden von Zeilen. Wichtig ist, dass die zu verbindenden Vektoren vom gleichen Typ sind.

x <- 6:9               
y <- 20:23             
cbind(x, y)             
x y
6 20
7 21
8 22
9 23
rbind(x, y)             
x 6 7 8 9
y 20 21 22 23

Wie in der Ausgabe zu sehen ist, bleiben die Namen der Vektoren x und y als Zeilen- bzw. Spaltennamen in der Matrix erhalten. Mit rownames() und colnames() können wir die Zeilen- und Spaltennamen ändern. Dies wird empfohlen, damit Objekte für Sie und andere verständlich bleiben.

z <- cbind(x, y)        
colnames(z) <- c("einstellig", "zweistellig")   
z                       
einstellig zweistellig
6 20
7 21
8 22
9 23
rownames(z) <- c("erste", "zweite", "dritte", "vierte") 
z                       
einstellig zweistellig
erste 6 20
zweite 7 21
dritte 8 22
vierte 9 23

3. Dataframes

Dataframes sind die übliche Form, in der tabellarische Daten in R gespeichert werden. Dies macht sie zu einem der wichtigsten Objekttypen in R. Dataframes können einerseits mit Funktionen zum Laden von externen Datensätzen erstellt werden. Dies wird Thema der nächsten Sitzung sein. Zum anderen können Dataframes auch direkt mit der Funktion data.frame() erzeugt werden. Dies funktioniert ähnlich wie die Bildung von Matrizen und wird hier kurz vorgestellt.

3.1 Dataframes manuell erstellen

Auch bei Dataframes müssen alle Zeilen und Spalten gleich lang sein. Im Gegensatz zu Matrizen ist es jedoch möglich, Elemente verschiedener Klassen miteinander zu kombinieren. Dies ist vor allem bei komplexeren Analysen von Vorteil. Dataframes können manuell erstellt werden, indem man in der Funktion data.frame() die Spalten, die sie zusammenfassen, also unsere Variablen, nacheinander mit Namen und Inhalt in Klammern angibt. In diesem Beispiel für die Variablen x und y:

df <- data.frame(x = 1:4, y = c(TRUE, TRUE, FALSE, FALSE))
df
x y
1 TRUE
2 TRUE
3 FALSE
4 FALSE

Wenn wir df ausgeben lassen, zeigt die Ausgabe die Variablennamen x und y oben und eine automatische Nummerierung der Spalten links. In einem etwas größeren Beispiel haben wir einen Auszug aus fiktiven Daten eines Experiments. Dieser Datensatz enthält Informationen über eine Identifikationsnummer identifikation und darüber, ob es sich um die Experimentalgruppe oder die Kontrollgruppe (bedingung) handelt. Darüber hinaus liegen die soziodemographischen Variablen geschlecht und alter sowie die Ergebnisse des Experiments zu zwei verschiedenen Zeitpunkten (wert_t1 und wert_t2) vor. Alle Daten liegen für sechs Teilnehmende vor.

df <- data.frame(identifikation = 1:6,
                 bedingung = c("E", "E", "C", "C", "C", "E"),
                 geschlecht = c("M", "M", "W", "M", "W", "W"),
                 alter = c(17,  19,  22,  18,  16,  21),
                 wert_t1 = c(8.0, 6.0, 7.5, 6.8, 8.0, 6.4),
                 wert_t2 = c(8.3, 6.4, 7.7, 6.3, 7.5, 6.4))
df
identifikation bedingung geschlecht alter wert_t1 wert_t2
1 E M 17 8.0 8.3
2 E M 19 6.0 6.4
3 C W 22 7.5 7.7
4 C M 18 6.8 6.3
5 C W 16 8.0 7.5
6 E W 21 6.4 6.4

Nun wird der große Vorteil von Dataframes deutlich: Sie ermöglichen es, Informationen unterschiedlicher Klassen zu kombinieren. Für jede Beobachtung ist also jede Form von Information verfügbar, die benötigt wird. In einer Matrix wäre dies nicht möglich.

3.2 Dataframes in Matrizen umwandeln

Es gibt eine weitere Möglichkeit, Dataframes zu erstellen. Dazu benötigen wir eine Matrix, die dann in einen Dataframe umgewandelt wird. In diesem Beispiel wandeln wir die oben erstellte Matrix z in einen Dataframe um. Dazu verwenden wir die Funktion as.data.frame().

dfz <- as.data.frame(z) 
dfz
einstellig zweistellig
erste 6 20
zweite 7 21
dritte 8 22
vierte 9 23

R liefert auch Funktionen für den umgekehrten Weg. Allerdings werden alle enthaltenen Elemente mittels implicit coercion umgewandelt. Wird die Funktion as.matrix() verwendet, werden alle Eingaben in characters umgewandelt. Wird die Funktion data.matrix() verwendet, werden alle Einträge in numerische Werte konvertiert. Hier ist ein Beispiel für den letzteren Fall.

dfm <- data.matrix(df) 
dfm
identifikation bedingung geschlecht alter wert_t1 wert_t2
1 2 1 17 8.0 8.3
2 2 1 19 6.0 6.4
3 1 2 22 7.5 7.7
4 1 1 18 6.8 6.3
5 1 2 16 8.0 7.5
6 2 2 21 6.4 6.4

Wie wir sehen, kam es bei der Umwandlung in eine Matrix zu dem typischen Informationsverlust durch implicit coercion, da die Variablen bedingung und geschlecht in Zahlen umgewandelt wurden. Um einen Informationsverlust vorzubeugen, sind diese Funktionen zu vermeiden.

3.3 Variablen- und Zeilennamen abfragen und verändern

Oft ist es nützlich, die in einem Datensatz enthaltenen Variablen zu untersuchen. Dies gilt insbesondere, wenn es sich um einen fremden Datensatz handelt. Die Namen der Variablen, das heißt der Spalten eines Datensatzes, können mit der Funktion names() abgefragt werden.

names(df)
## [1] "identifikation" "bedingung"      "geschlecht"     "alter"          "wert_t1"        "wert_t2"

Mit names() können wir auch die Variablennamen ändern. Erscheint uns beispielsweise die Bezeichnung “identifikation” zu lang und wir einen kürzeren Variablennamen bevorzugen, so können wir diesen einfach anpassen. Dazu wird die erste Spalte des Dataframes df mit den eckigen Klammern [] ausgewählt und dann geändert.

names(df)[1] <- "id" 
df
id bedingung geschlecht alter wert_t1 wert_t2
1 E M 17 8.0 8.3
2 E M 19 6.0 6.4
3 C W 22 7.5 7.7
4 C M 18 6.8 6.3
5 C W 16 8.0 7.5
6 E W 21 6.4 6.4

Achten Sie bei der Änderung von Variablennamen darauf, dass diese gut lesbar und für andere verständlich sind. Die Variablennamen sollten jedoch nicht zu lang sein, um unnötigen Schreibaufwand zu vermeiden.

4. Zeilen, Spalten und Zellen auswählen

Häufig benötigt man einen Datensatz nicht in seiner Gesamtheit, sondern möchte bestimmte Zeilen oder Spalten oder einzelne Zellen aus einer Matrix oder einem Dataframe auswählen. Innerhalb zweidimensionaler Objekte können einzelne Elemente auf verschiedene Arten ausgewählt werden.

4.1 Auswählen mithilfe der eckigen Klammern []

Mit einer Zahl vor dem Komma kann eine Zeile und mit einer Zahl nach dem Komma eine Spalte in R ausgewählt werden. Durch diese Identifikation von Zeilen und Spalten ist es möglich, Elemente innerhalb von zweidimensionalen Objekten auszugeben. Im Folgenden werden einige Beispiele für die Auswahl von Elementen gegeben. Diese werden anhand eines Dataframes gezeigt, können aber analog auch auf Matrizen angewendet werden.

Dritte Spalte:

df[, 3] 
## [1] "M" "M" "W" "M" "W" "W"

Jede Spalte außer der ersten:

df[, -1] 
bedingung geschlecht alter wert_t1 wert_t2
E M 17 8.0 8.3
E M 19 6.0 6.4
C W 22 7.5 7.7
C M 18 6.8 6.3
C W 16 8.0 7.5
E W 21 6.4 6.4

Die vierte Zeile:

df[4, ]
id bedingung geschlecht alter wert_t1 wert_t2
4 4 C M 18 6.8 6.3

Die Zelle in der zweiten Reihe und vierten Spalte:

df[2, 5]  
## [1] 6

Nur die Variablen Identifikation und Alter:

df[, c(1, 4)] 
id alter
1 17
2 19
3 22
4 18
5 16
6 21

Die letzten drei Beobachtungen:

df[4:6, ]  
id bedingung geschlecht alter wert_t1 wert_t2
4 4 C M 18 6.8 6.3
5 5 C W 16 8.0 7.5
6 6 E W 21 6.4 6.4

Wenn Zeilen- und Spaltennamen vorliegen, können wir genauso diese Namen zur Indizierung mithilfe der eckigen Klammern verwenden.

df[, c("bedingung", "geschlecht")]  
bedingung geschlecht
E M
E M
C W
C M
C W
E W

4.2. Auswählen mithilfe des Dollarzeichens $

Für Dataframes empfiehlt sich die Verwendung des Dollarzeichens $ als Alternative zur Auswahl durch Klammern. Es wird der Variablenname mit dem Dollarzeichen an den Datensatz angehängt. Für Matrizen funktioniert dieses Auswahlverfahren allerdings nicht.

df$alter
## [1] 17 19 22 18 16 21

Die Verwendung des Dollarzeichens ist weniger fehleranfällig, da wir den Namen der ausgewählten Variablen explizit angeben müssen und der Code weniger komplex ist. RStudio hilft uns dabei, indem es automatisch Variablennamen vorschlägt. Außerdem wird unser Code durch die Angabe der Variablennamen übersichtlicher und verständlicher. Daher ist die Auswahl über das Dollarzeichen bei Dataframes vorzuziehen.

4.3 Auswählen mit logischen Vektoren und Werten

Neben der Identifikation von Zeilen und Spalten können auch einzelne Werte innerhalb einer Spalte oder Variable ausgewählt werden. Oft ist es von Interesse, für welche Beobachtungen eine Variable einen bestimmten Wert annimmt. Wir können daher bei der Auswahl noch detaillierter vorgehen als oben gezeigt. Und zwar indem wir die Merkmalsausprägungen bei der Auswahl miteinbeziehen. Wenn uns beispielsweise interessiert, welche Teilnehmenden des Experiments der Kontrollgruppe angehören, gehen wir folgendermaßen vor.

Wir bilden einen logischen Vektor, der eine Aussage darüber trifft, für welche Beobachtungen unter Bedingung ein C eingetragen wurde.

df$bedingung == "C"
## [1] FALSE FALSE  TRUE  TRUE  TRUE FALSE

Ergebnis: Die Variable Bedingung nimmt in der ersten, zweiten und sechsten Zeile den Wert C an.

Diesen logischen Vektor wenden wir auf den Datensatz df an indem wir ihn in die eckigen Klammern vor das Komma schreiben. Also dorthin, wo Information zu den Zeilen abgerufen wird. Die Anweisung an R lautet dann: Nenne mir die Zeilen, für die die Aussage, dass die Variable Bedingung gleich C ist, zutrifft.

df[df$bedingung == "C", ]
id bedingung geschlecht alter wert_t1 wert_t2
3 3 C W 22 7.5 7.7
4 4 C M 18 6.8 6.3
5 5 C W 16 8.0 7.5

Genauso könnten uns nur die Probanden interessieren, die der Kontrollgruppe angehören und die einen wert_t1 aufweisen, der größer als 6,0 ist. Wir formulieren also zwei Bedingungen, die wir mit einem logischem & verknüpfen.

df[df$bedingung == "C" & df$wert_t1 > 6.0, ]
id bedingung geschlecht alter wert_t1 wert_t2
3 3 C W 22 7.5 7.7
4 4 C M 18 6.8 6.3
5 5 C W 16 8.0 7.5

In diesen Beispielen beziehen wir die Identifikation der Zeilen, die ausgewählt werden sollen, auf den gesamten Datensatz, da df vor der eckigen Klammer steht. Wir können die Kennzeichnung aber auch nur auf einzelne Variablen beziehen. Dies erreichen wir, indem wir vor die eckigen Klammern zusätzlich einen Variablennamen schreiben. Wenn wir ein Element einer Variablen auswählen wollen, haben wir es wieder mit einem eindimensionalen Objekt zu tun. Deshalb gehen wir bei der Auswahl von Elementen innerhalb von Vektoren genauso vor wie in Sitzung 1. Das heißt, das Komma in der eckigen Klammer entfällt.

df$geschlecht[df$bedingung == "C"]
## [1] "W" "M" "W"

5 Subsets erstellen

Die Auswahl von Zeilen, Spalten und Zellen kann nützlich sein, um Informationen über Variablen zu erhalten oder diese zu transformieren. Häufig möchten wir jedoch einen Datensatz nach bestimmten Auswahlkriterien einschränken. Zum Beispiel, wenn wir nur an einem bestimmten Satz von Variablen oder einem bestimmten Untersuchungszeitraum für unsere weitere Analyse interessiert sind. In diesem Fall ist es sinnvoll, einen Teildatensatz, ein Subset, zu erstellen. Dazu müssen wir zunächst die Elemente, die uns interessieren auswählen. Im nächsten Schritt müssen wir diese Elemente in einem neuen Objekt speichern. Die Auswahl der Elemente haben wir bereits behandelt. Wie wir in der ersten Sitzung gesehen haben, verwenden wir den Operator <-, um ein Objekt zu speichern. Dies funktioniert genauso für Subsets.

5.1 Subsets bilden mithilfe logischer Vektoren

Hier ein Beispiel für ein Subset, dass nur die Experimentalgruppe enthält:

subset <- df[df$bedingung == "E", ]
subset
id bedingung geschlecht alter wert_t1 wert_t2
1 1 E M 17 8.0 8.3
2 2 E M 19 6.0 6.4
6 6 E W 21 6.4 6.4

subset ist nun das Objekt, in dem der verkürzte Datensatz gespeichert wurde. Nun ein weiteres Beipsiel für einen Teildatensatz der nur die volljährigen Probanden beinhaltet:

subset <- df[df$alter >= 18, ]
subset
id bedingung geschlecht alter wert_t1 wert_t2
2 2 E M 19 6.0 6.4
3 3 C W 22 7.5 7.7
4 4 C M 18 6.8 6.3
6 6 E W 21 6.4 6.4

Diese Subsets sind durch die inhaltliche Merkmalsausprägung der Variablen bedingung und alter bestimmt. Natürlich können wir auch einfach einzelne Spalten oder Zeilen auswählen. Generell ist der Ablauf identisch zur Auswahl von Elemente aus einem Dataframe. Der einzige Unterschied besteht darin, dass wir unser Subset in einem neuen Objekt speichern.

Subset, das nur die Variable alter beinhaltet:

subset <- df$alter 
subset
## [1] 17 19 22 18 16 21

Subset der vierten bis zur sechsten Zeile:

subset <- df[4:6, ]    
subset
id bedingung geschlecht alter wert_t1 wert_t2
4 4 C M 18 6.8 6.3
5 5 C W 16 8.0 7.5
6 6 E W 21 6.4 6.4

Subset der ersten und der dritten Spalte:

subset <- df[, c(1, 3)] 
subset
id geschlecht
1 M
2 M
3 W
4 M
5 W
6 W

Subset der Variablen id, geschlecht´, undalter`:

subset <- df[, c("id", "geschlecht", "alter")]  
subset
id geschlecht alter
1 M 17
2 M 19
3 W 22
4 M 18
5 W 16
6 W 21

5.2 subset()

Durch die Funktion subset() können wir uns das aufwendige Auswählen der Elemente mittels eckiger Klammern vereinfachen. subset() ermöglicht die Reduktion eines Datensatzes auf ausgewählte Zeilen mit dem Argument subset und auf bestimmte Spalten mit dem Argument select.

Wir erstellen einen verkürzten Datensatz, der nur die Variable alter beinhaltet:

sub <- subset(df, select = alter)
sub
alter
17
19
22
18
16
21

Es wird ein Subset aus den Variablen id, geschlecht´ undalter` erstellt:

sub <- subset(df, select = c(id, geschlecht, alter))
sub
id geschlecht alter
1 M 17
2 M 19
3 W 22
4 M 18
5 W 16
6 W 21

Hier wird ein neuer Datensatz erstellt, der nur minderjährige Teilnehmende enthält. Dabei können wir das Argument subset auch weglassen.

sub <- subset(df, alter < 18) 
sub
id bedingung geschlecht alter wert_t1 wert_t2
1 1 E M 17 8 8.3
5 5 C W 16 8 7.5

Das Argument select erfordert eine Indizierung der Variablen, während das Argument subset inhaltliche Information zu den Merkmalsausprägungen erfordert (z.B. “>= 4”, “< 18”). Unabhängig davon, wie Sie ein Subset erstellen, beachten Sie, dass Sie ihr Subset niemals unter dem Namen des ursprünglichen Datensatzes speichern. Dadurch wird der ursprüngliche Datensatz mit dem Subset überschrieben, was unbedingt zu vermeiden ist.

6. Faktoren

Abschließend möchten wir mit den Faktoren einen wichtigen eindimensionalen Objekttyp behandeln. Das Besondere an Faktoren ist, dass sie Labels verwenden. Mithilfe von beschreibenden Labels wird unsere Datenanalyse anschaulicher: Eine Variable, welche die Labels “klein”, “mittel” und “groß” verwendet, ist intuitiv verständlicher als eine Variable, die stattdessen nur die numerischen Werte 1, 2 und 3 besitzt. Durch Faktoren erhalten wir eine Beschreibung zu unseren Daten.

Wir erzeugen Faktoren mit der Funktion factor(). Unser Faktor x soll einmal den Wert “klein”, zweimal den Wert “mittel” und dreimal den Wert “groß” beinhalten. Wir verwenden c() und zählen die Werte des Faktors auf.

x <- factor(c("klein", "mittel", "mittel", "groß", "groß", "groß"))
x
## [1] klein  mittel mittel groß   groß   groß  
## Levels: groß klein mittel

Nachdem wir x ausgeben haben, sehen wir im Output, dass unsere Ausprägungen wie gewünscht erscheinen. Die Levels werden außerdem noch einmal ausgegeben. Das Besondere an den Faktoren ist, dass sich hinter den Labels (“klein”, “mittel” und “groß”) numerische Werte verbergen. Sie ermöglichen mathematische Operationen, die mit den Labels selbst nicht möglich wären. Die zugrundeliegenden numerischen Werte können wir uns mithilfe von unclass(x) ausgeben lassen.

unclass(x)
## [1] 2 3 3 1 1 1
## attr(,"levels")
## [1] "groß"   "klein"  "mittel"
x
## [1] klein  mittel mittel groß   groß   groß  
## Levels: groß klein mittel

Vergleicht man die Ausgabe von unclass(x) und x vergleichen, so stellt man fest, dass “klein” den Wert 2, “mittel” den Wert 3 und “groß” den Wert 1 erhalten hat. Dies liegt daran, dass R sich bei der Zuweisung der Werte an der alphabetischen Reihenfolge orientiert. Demnach kommt zuerst G, dann M und dann K, was einer inhaltlich sinnvollen Ordnung unserer Levels widerspricht. Deshalb ordnen wir x nun so an, dass “klein” < “mittel” < “groß” ist. Dazu verwenden wir das Argument levels = innerhalb der Funktion factor() und geben dort mit der Funktion c() die Level in der richtigen Reihenfolge an.

x <- factor(c("klein", "mittel", "mittel", "groß", "groß", "groß"),
            levels = c("klein", "mittel", "groß"))
unclass(x)
## [1] 1 2 2 3 3 3
## attr(,"levels")
## [1] "klein"  "mittel" "groß"
x
## [1] klein  mittel mittel groß   groß   groß  
## Levels: klein mittel groß

Jetzt sind Label und Wert sinnvoll zu geordnet. Da Dataframes Variablen unterschiedlicher Klassen enthalten können, können Variablen auch als Faktoren vorliegen. Mit as.factor() können wir Vektoren zu Faktoren umwandeln. Das gilt auch für Variablen in von Dataframes. Innerhalb des Dataframes df ist das nur für die character-Variablen bedingung und geschlecht sinnvoll, da deren Inhalt als Labels interpretiert werden kann.

df$geschlecht <- as.factor(df$geschlecht)
df$geschlecht
## [1] M M W M W W
## Levels: M W
unclass(df$geschlecht)
## [1] 1 1 2 1 2 2
## attr(,"levels")
## [1] "M" "W"
df
id bedingung geschlecht alter wert_t1 wert_t2
1 E M 17 8.0 8.3
2 E M 19 6.0 6.4
3 C W 22 7.5 7.7
4 C M 18 6.8 6.3
5 C W 16 8.0 7.5
6 E W 21 6.4 6.4

7. Aufgaben

  1. Erstellen Sie zwei Matrizen, die beliebige zwölf Werte beinhalten:
    1. mit drei Zeilen und Spalte für Spalte mit Werten versehen;
    2. mit zwei Spalten und Zeile für Zeile mit Werten versehen.
  2. Erstellen Sie einen character-Vektor “p”, der die Namen der im 20. Deutschen Bundestag vertretenen Parteien enthält. Information finden Sie hier: https://www.bundestag.de/resource/blob/196106/b4daa14a76f53a3d58892a6373259a9d/Kapitel_01_16_Stimmenanteil_-_Mandatsanteil-data.pdf
    1. Ordnen Sie den Vektor nach dem Mandatsanteil der Parteien beginnend mit dem größten Anteil.
    2. Erstellen Sie außerdem einen numerischen Vektor “a”, der die Mandatsanteile (gerundet auf eine Nachkommastelle) der Parteien enthält. Orientieren Sie sich an der Ordnung von “p”.
    3. Erstellen Sie eine Matrix, indem Sie beide Vektoren als Spalten verbinden. Inspizieren Sie die erstellte Matrix.
  3. Wandeln Sie die unter 2. erstellte Matrix in einen Dataframe um. Prüfen Sie die Klasse der beiden Variablen des Dataframe. Wandeln Sie sie ggf. in ein angemessenes Datenformat um. Geben Sie beiden Variablen sinnvolle Namen.
  4. Erstellen Sie Subsets für die folgenden Koalitionen und speichern Sie sie in Objekten mit den angegbenen Namen:
    1. CDU/CSU-SPD -> “groko”
    2. CDU/CSU-FDP-Grüne -> “jamaika”. Summieren Sie jeweils den Mandatsanteil der möglichen Koalitionen (Tipp: nutzen Sie sum()).
  5. Erstellen Sie einen Faktor mit den Kategorien “Handy”, “Tablet”, “Laptop”, “PC”. Handys sollen zweimal, Tablets viermal, Laptops dreimal und PCs fünfmal vorkommen.
    1. Ordnen Sie den Faktor nach der Größe der Geräte von klein nach groß.
    2. Lassen Sie sich die table()und die summary() des Faktors ausgeben.
    3. Wandeln Sie den Faktor in einen numeric-Vektor um. Lassen Sie sich die table()und die summary() des Vektors ausgeben. Was hat sich im Output dieser Funktionen verändert?