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")