library(dplyr)
##
## 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
lms_data <- read.csv("lms_data.csv")
# Struktur und erste Übersicht
str(lms_data)
## 'data.frame': 592 obs. of 10 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Kursname : chr "Data Science" "Psychologie" "Data Science" "Data Science" ...
## $ Login_Anzahl : int 5 81 11 79 15 81 67 19 41 18 ...
## $ Verweildauer_min: int 68 51 142 118 179 26 64 119 101 159 ...
## $ Abgaben : int 9 10 10 1 10 2 7 10 2 8 ...
## $ ECTS_Punkte : int 6 5 10 3 3 6 7 5 5 6 ...
## $ Punkzahl : num 91.6 93.2 54 64.5 6.1 41.5 51.7 67.6 36.2 39.8 ...
## $ Nutzerrolle : chr "Student" "Tutor" "Student" "Tutor" ...
## $ Letzter_Login : chr "2024-05-01" "2024-01-29" "2024-05-22" NA ...
## $ Gerät : chr "Smartphone" "Tablet" "desktop" "Smartphone" ...
summary(lms_data)
## ID Kursname Login_Anzahl Verweildauer_min
## Min. : 1.0 Length:592 Min. : 5.00 Min. : 10.00
## 1st Qu.:148.8 Class :character 1st Qu.: 30.00 1st Qu.: 47.75
## Median :296.5 Mode :character Median : 53.00 Median : 90.50
## Mean :296.5 Mean : 53.21 Mean : 92.56
## 3rd Qu.:444.2 3rd Qu.: 77.00 3rd Qu.:138.00
## Max. :592.0 Max. :100.00 Max. :180.00
## NA's :15 NA's :12
## Abgaben ECTS_Punkte Punkzahl Nutzerrolle
## Min. : 0.00 Min. : 3.000 Min. : 0.00 Length:592
## 1st Qu.: 2.00 1st Qu.: 4.000 1st Qu.: 26.05 Class :character
## Median : 5.00 Median : 6.000 Median : 51.40 Mode :character
## Mean : 5.02 Mean : 6.386 Mean : 50.51
## 3rd Qu.: 8.00 3rd Qu.: 8.000 3rd Qu.: 74.88
## Max. :10.00 Max. :10.000 Max. :100.00
## NA's :20 NA's :10
## Letzter_Login Gerät
## Length:592 Length:592
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
head(lms_data)
## ID Kursname Login_Anzahl Verweildauer_min Abgaben ECTS_Punkte
## 1 1 Data Science 5 68 9 6
## 2 2 Psychologie 81 51 10 5
## 3 3 Data Science 11 142 10 10
## 4 4 Data Science 79 118 1 3
## 5 5 Statistik 15 179 10 3
## 6 6 Bildungsforschung 81 26 2 6
## Punkzahl Nutzerrolle Letzter_Login Gerät
## 1 91.6 Student 2024-05-01 Smartphone
## 2 93.2 Tutor 2024-01-29 Tablet
## 3 54.0 Student 2024-05-22 desktop
## 4 64.5 Tutor <NA> Smartphone
## 5 6.1 Student 2024-05-05 desktop
## 6 41.5 Student 2024-05-04 desktop
#Datentypen überprüfen
sapply(lms_data, class)
## ID Kursname Login_Anzahl Verweildauer_min
## "integer" "character" "integer" "integer"
## Abgaben ECTS_Punkte Punkzahl Nutzerrolle
## "integer" "integer" "numeric" "character"
## Letzter_Login Gerät
## "character" "character"
#Fehlende Werte identifizieren
colSums(is.na(lms_data))
## ID Kursname Login_Anzahl Verweildauer_min
## 0 0 15 12
## Abgaben ECTS_Punkte Punkzahl Nutzerrolle
## 0 20 10 0
## Letzter_Login Gerät
## 18 0
# Zeilen mit fehlenden Werten entfernen
lms_data <- na.omit(lms_data)
# Falschen Spaltennamen korrigieren
lms_data <- rename(lms_data, Punktzahl = Punkzahl)
# Datentypen anpassen
lms_data$ECTS_Punkte <- as.numeric(lms_data$ECTS_Punkte)
# Inkonsistente Werte standardisieren
lms_data$Gerät[lms_data$Gerät == "phone"] <- "Smartphone"
Welchen Zusammenhang gibt es zwischen den verwendeten Geräten und der erreichenten Punktzahl?
# Nur bestimmte Spalten auswählen
lms_data_new <- select(lms_data, ID, Kursname, Punktzahl, ECTS_Punkte, Gerät, Nutzerrolle)