Aufgabe 1: Import des Datensatzes zu Hochschulen und Hochschularten in Deutschland (BMBF). Anstatt des Excel-Imports habe ich mich für die CSV-Version entschieden. Da nach dem Import die ersten 4 Zeilen nicht bedeutungstragend sind, entfernen wir diese nach dem Import. Für das Entfernen gibt es unterschiedliche Ansätze.
hbde <- read.csv("https://www.datenportal.bmbf.de/portal/Tabelle-2.5.1.csv", header = TRUE, sep=";", skip = 4)
# Wenn die Skip-Funktion nicht genutzt wird, können auch die ersten Zeilen entfernt werden
# hbde <- hbde[-c(1:4),]
Aufgabe 2a: Examensdaten von Royce Kimmons importieren. Deskriptive Analyse und Zusammenfassung der Daten.
exams <- read.csv("http://roycekimmons.com/system/generate_data.php?dataset=exams&n=100")
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
summary(exams, digits = 2)
## gender race.ethnicity parental.level.of.education
## Length:100 Length:100 Length:100
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## lunch test.preparation.course math.score reading.score
## Length:100 Length:100 Min. : 33 Min. : 41
## Class :character Class :character 1st Qu.: 53 1st Qu.: 57
## Mode :character Mode :character Median : 69 Median : 71
## Mean : 67 Mean : 70
## 3rd Qu.: 80 3rd Qu.: 81
## Max. :100 Max. :100
## writing.score
## Min. : 33
## 1st Qu.: 58
## Median : 68
## Mean : 69
## 3rd Qu.: 81
## Max. :100
Aufgabe 2b: Weitere deskriptive Analyse und Ausgabe einiger Basisplots. Für die numerischen Variable interessiert uns die Verteilung der Daten sowie die Kombination von kategorialen Daten und numerischen Daten.
# install.packages("ggpubr")
library("ggpubr")
## Loading required package: ggplot2
ggboxplot(exams, y = "math.score", width = 0.5)
ggboxplot(exams, y = "math.score", x = "gender", width = 0.5)
ggboxplot(exams, y = "math.score", x = "test.preparation.course", width = 0.5)
Aufgabe 2c: Nun widmen wir uns der Feststellung der Normalverteilung, die für verschiedenen Analysen eine wichtige Voraussetzung darstellt. Dazu nutzen wir die sog. QQ-Plots und den Shapiro-Wilk-Test.
ggqqplot(exams, x = "math.score")
shapiro.test(exams$math.score)
##
## Shapiro-Wilk normality test
##
## data: exams$math.score
## W = 0.97088, p-value = 0.02584
2d: Es kann auch interessant sein, zu explorieren, wie viele Fälle einer Kategeorie einer Variable im Datensatz anwesend sind.
library(ggpubr)
ploe <- exams$parental.level.of.education
tploe <- as.data.frame(table(ploe))
ggbarplot(tploe, x = "ploe", y = "Freq", title = "Distribution of parental level of education", las=2)
Aufgabe 3a: Aus dem Datenframe aus Ausgabe 1 die Daten von BW ausschneiden (ohne dplyr). Im ersten Schritt schneiden wir alle Daten aus BW aus, im zweiten Schritt nur die Daten der Universitäten und Pädagogischen Hochschulen.
hbde_bw <- hbde[(1:28),]
hbde_bw2 <- hbde[(1:28),(3:4)]
Aufgabe 3b: Der Gesamtdatensatz soll nun im zweiten Schritt mit einem Filter ausgeschnitten werden und nicht mit einer Gesamtspezifikation der Zeilen und Spalten. Dazu nutzen wir das Paket dplyr. Dies ist besonder nützlich, wenn wir eine große Datenmatrix haben.
library(dplyr)
hbde_bw3 <- filter(hbde, X == "Baden-Württemberg")