Vorbereitung: Paket laden

# Installiere ggf. das Paket dplyr (nur einmal notwendig)
# install.packages("dplyr")

# Lade das Paket dplyr
library(dplyr)
## Warning: Paket 'dplyr' wurde unter R Version 4.4.2 erstellt
## 
## Attache Paket: 'dplyr'
## Die folgenden Objekte sind maskiert von 'package:stats':
## 
##     filter, lag
## Die folgenden Objekte sind maskiert von 'package:base':
## 
##     intersect, setdiff, setequal, union

Aufgabe 2: CSV-Datei einlesen

datacsv_1 <- read.csv("datacsv_1.csv")

Aufgabe 3: Datenbereinigung

Datenexploration


Welche Spalten enthält der Datensatz?

dim(datacsv_1)          # Zeigt Anzahl der Zeilen und Spalten
## [1] 100   5
colnames(datacsv_1)     # Zeigt die Namen der Spalten
## [1] "Student_ID"        "alter"             "Geschlecht"       
## [4] "Notendurchschnitt" "fehl_tage"

Ergebnis: Der Datensatz enthält 5 Spalten: - Student_ID - alter - Geschlecht - Notendurchschnitt - fehl_tage Der Spaltenname fehl_tage enthält einen Unterstrich und weicht ggf. von der üblichen Benennung ab. Möglicherweise war fehltage oder FehlTage gemeint. Solche Inkonsistenzen sollten korrigiert werden, um Folgefehler zu vermeiden.


Welche Datentypen sind vorhanden? Sind diese korrekt?

str(datacsv_1)          # Überblick über Struktur und Typen
## 'data.frame':    100 obs. of  5 variables:
##  $ Student_ID       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ alter            : int  18 18 18 17 18 17 17 17 NA 16 ...
##  $ Geschlecht       : chr  "M" "W" "M" "W" ...
##  $ Notendurchschnitt: num  2.6 1.8 2.2 2.3 3.8 2 2.7 2.6 1.8 2.5 ...
##  $ fehl_tage        : int  18 17 16 5 9 7 9 12 19 5 ...
sapply(datacsv_1, class)  # Typen pro Spalte
##        Student_ID             alter        Geschlecht Notendurchschnitt 
##         "integer"         "integer"       "character"         "numeric" 
##         fehl_tage 
##         "integer"

Ergebnis: - Student_ID, alter, Notendurchschnitt, fehl_tage sind (num/int) - korrekt. - Geschlecht ist ein Text (character) – evtl. besser als Faktor darstellbar,


Gibt es fehlende Werte? Wenn ja, wie viele und wo?

colSums(is.na(datacsv_1))         # Anzahl fehlender Werte je Spalte
##        Student_ID             alter        Geschlecht Notendurchschnitt 
##                 0                 5                 0                12 
##         fehl_tage 
##                 7

Ergebnis: - alter: 5 fehlende Werte - Notendurchschnitt: 12 fehlende Werte - fehl_tage: 7 fehlende Werte

datacsv_1[!complete.cases(datacsv_1), ]  # Zeigt nur Zeilen mit mindestens einem NA
##    Student_ID alter Geschlecht Notendurchschnitt fehl_tage
## 9           9    NA          D               1.8        19
## 11         11    NA          W               3.5        19
## 16         16    18          D                NA         6
## 19         19    18          W                NA        17
## 24         24    16          D                NA        16
## 30         30    NA          W               1.6        18
## 31         31    16          D               3.1        NA
## 37         37    18          D                NA        NA
## 39         39    16          D                NA        11
## 43         43    NA          D               1.6        11
## 46         46    16          M                NA        20
## 47         47    16          D                NA         5
## 48         48    17          D               2.2        NA
## 54         54    16          D                NA         0
## 60         60    16          D                NA        NA
## 61         61    NA          W               1.8         9
## 62         62    19          M               3.4        NA
## 63         63    19          D                NA        17
## 72         72    16          D               2.3        NA
## 79         79    19          W                NA        11
## 80         80    19          D               1.7        NA
## 98         98    17          M                NA        19

Ergebnis: Insgesamt 21 Zeilen enthalten mindestens einen fehlenden Wert.


Datenbereinigung

Nun bereinigen wir die Daten Schritt für Schritt:


Spaltennamen korrigieren

Wir ändern den Spaltennamen fehl_tage zu Fehltage (ohne Unterstrich und mit großem Anfangsbuchstaben), um ihn konsistenter zu machen.

datacsv_1 <- rename(datacsv_1, Fehltage = fehl_tage)

Datentypen anpassen

Wir wandeln Geschlecht in einen Faktor um, damit R ihn als kategoriale Variable erkennt.

datacsv_1$Geschlecht <- as.factor(datacsv_1$Geschlecht)

Fehlende Werte entfernen

Wir entfernen alle Zeilen mit fehlenden Werten, um mit vollständigen Daten weiterarbeiten zu können.

datacsv_1 <- na.omit(datacsv_1)

Aufgabe 4: Daten extrahieren und filtern


Daten extrahieren

Wir erstellen nun einen neuen Datensatz, der nur die Spalten Alter, Notendurchschnitt und Fehltage enthält. Das ist hilfreich, wenn man nur mit einem Teil der Variablen weiterarbeiten möchte.

data_selected <- select(datacsv_1, alter, Notendurchschnitt, Fehltage)

Ergebnis: Der neue Datensatz enthält nur die drei ausgewählten Spalten und kann für spezifische Auswertungen oder Visualisierungen verwendet werden.


Daten filtern

Jetzt filtern wir den Datensatz weiter.

data_filtered <- filter(data_selected, Notendurchschnitt <= 2.5 & Fehltage <= 10)

Ergebnis: Der neue Datensatz data_filtered enthält nur noch die Schüler:innen, die beide Bedingungen erfüllen.** Dieser neue Datensatz enthält nur die drei ausgewählten Spalten und kann für spezifische Auswertungen oder Visualisierungen verwendet werden.