# 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
datacsv_1 <- read.csv("datacsv_1.csv")
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.
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,
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.
Nun bereinigen wir die Daten Schritt für Schritt:
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)
Wir wandeln Geschlecht
in einen Faktor um, damit R ihn
als kategoriale Variable erkennt.
datacsv_1$Geschlecht <- as.factor(datacsv_1$Geschlecht)
Wir entfernen alle Zeilen mit fehlenden Werten, um mit vollständigen Daten weiterarbeiten zu können.
datacsv_1 <- na.omit(datacsv_1)
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.
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.