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

Schritt 1: CSV Datei einlesen

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

Schritt 2:

# 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

Schritt 3: Datenbereinigung

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

Schritt 4: Forschungsfrage

Welchen Zusammenhang gibt es zwischen den verwendeten Geräten und der erreichenten Punktzahl?

Schritt 5: Daten filtern und extrahieren

# Nur bestimmte Spalten auswählen
lms_data_new <- select(lms_data, ID, Kursname, Punktzahl, ECTS_Punkte, Gerät, Nutzerrolle)