Gewählter Datensatz sind Kursleistungsdaten daten <- read.csv(“stud_data.csv”)
Struktur und erste Übersicht
str(daten) ‘data.frame’: 344 obs. of 10 variables: $ ID : int 1 2 3 4 5 6 7 8 9 10 … $ Alter : int 18 22 18 26 27 21 19 27 18 25 … $ Geschlecht : chr “M” “D” “M” “M” … $ Studiengang : chr “Psychologie” “Informatik” “Wirtschaft” “BWL” … $ ECTS_Credits : int 133 90 11 96 100 49 171 137 127 76 … $ Durchschnitnote : num 3.1 2.4 3.3 2.1 2.7 2.8 2.7 2.6 2.5 2.4 … $ Anwesenheitsquote : int 55 51 75 52 93 65 92 69 58 74 … $ Semester : int 4 7 4 2 8 2 9 5 3 2 … $ Nebenjob : chr “Ja” “Nein” “Ja” “Ja” … $ Abschlusswahrscheinlichkeit: num 84.3 74.2 72.7 91 56.6 85 50.9 89.6 76 42 …
summary(daten) ID Alter Geschlecht Studiengang ECTS_Credits
Min. : 1.00 Min. :18.00 Length:344 Length:344 Min. : 10.0
1st Qu.: 86.75 1st Qu.:21.00 Class :character Class :character 1st Qu.:
56.0
Median :172.50 Median :24.00 Mode :character Mode :character Median
:100.0
Mean :172.50 Mean :23.81 Mean : 98.2
3rd Qu.:258.25 3rd Qu.:27.00 3rd Qu.:145.0
Max. :344.00 Max. :30.00 Max. :180.0
NA’s :10 NA’s :15
Durchschnitnote Anwesenheitsquote Semester Nebenjob
Abschlusswahrscheinlichkeit Min. :1.000 Min. : 50.00 Min. : 1.000
Length:344 Min. :40.60
1st Qu.:2.000 1st Qu.: 62.00 1st Qu.: 4.000 Class :character 1st
Qu.:57.48
Median :2.600 Median : 75.00 Median : 7.000 Mode :character Median
:72.50
Mean :2.531 Mean : 74.45 Mean : 6.648 Mean :71.02
3rd Qu.:3.000 3rd Qu.: 85.00 3rd Qu.:10.000 3rd Qu.:85.03
Max. :4.900 Max. :100.00 Max. :12.000 Max. :99.70
NA’s :12 NA’s :8
head(daten) ID Alter Geschlecht Studiengang ECTS_Credits Durchschnitnote Anwesenheitsquote Semester Nebenjob 1 1 18 M Psychologie 133 3.1 55 4 Ja 2 2 22 D Informatik 90 2.4 51 7 Nein 3 3 18 M Wirtschaft 11 3.3 75 4 Ja 4 4 26 M BWL 96 2.1 52 2 Ja 5 5 27 M Physik 100 2.7 93 8 Nein 6 6 21 M Wirtschaft 49 2.8 65 2 Ja Abschlusswahrscheinlichkeit 1 84.3 2 74.2 3 72.7 4 91.0 5 56.6 6 85.0
Datentypen überprüfen
sapply(daten, class) ID Alter Geschlecht Studiengang “integer” “integer” “character” “character” ECTS_Credits Durchschnitnote Anwesenheitsquote Semester “integer” “numeric” “integer” “integer” Nebenjob Abschlusswahrscheinlichkeit “character” “numeric”
Fehlende Werte identifizieren
colSums(is.na(daten)) ID Alter Geschlecht Studiengang 0 10 0 0 ECTS_Credits Durchschnitnote Anwesenheitsquote Semester 15 12 8 0 Nebenjob Abschlusswahrscheinlichkeit 0 0
Fehlende Werte identifizieren + Zeilen mit fehlenden Werten entfernen daten <- na.omit(daten)
Falschen Spaltennamen korrigieren daten <- rename(daten, Abschlusswahrscheinlichkeit = Abschlusswahrscheinlichkeit) #Hab nen Fehler gesehen wo keiner war daten <- rename(daten, ECTS-Credits = ECTS_Credits) Error: unexpected ‘=’ in “daten <- rename(daten, ECTS-Credits =” #Hat leider nicht funktioniert :( daten <- rename(daten, Durchschnittsnote = Durchschnitnote)
Datentypen anpassen daten\(Geschlecht <- as.factor(daten\)Geschlecht) daten\(Studiengang <- as.factor(daten\)Studiengang) daten\(Nebenjob <- as.factor(daten\)Nebenjob)
Hab in den Datensatz geschaut in angepasst was mir sinnvoll schien daten\(Geschlecht[daten\)Geschlecht == “mänlich”] <- “M” daten\(Geschlecht[daten\)Geschlecht == “weibl”] <- “W” daten\(Geschlecht[daten\)Geschlecht == “div”] <- “D”
Hab eine Forschungsfrage entwicklet: Besteht ein Zusammenhang zwischen Anwesenheitsquote und Durchschnittsnote?)
Wegen Forschungsfrage der Befehl um nur bestimmte Spalten auszuwählen: > daten <- read.csv(“stud_data.csv”)
Hier könnte dann eine Korrelationsanalyse + ein Streudiagramm zur Vidalisierung angefordert werden, aber das haben wir noch nicht gelernt
write.csv(daten, “bereinigter_datensatz.csv”)