In diesem Bericht werden die Studierendenzahlen verschiedener Studiengänge im Zeitraum 2005 bis 2024 untersucht. Ziel ist es, Entwicklungen über die Zeit sichtbar zu machen und herauszufinden wo sich etwas spannend verändert hat.
Zuerst werden die Rohdaten in R eingelesen.
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
library(tidyr)
library(readr)
data_raw <- read.csv(
"C:/Users/lindn/OneDrive/Dokumente/ELMEB/3 Semester/Data Science/kleines Datenprojekt/Studiengänge.csv",
sep = ";"
)
dim(data_raw)
## [1] 52 41
str(data_raw)
## 'data.frame': 52 obs. of 41 variables:
## $ Column1 : chr "Tab.1.9.4" "" "Studienanfängerinnen und Studienanfänger absolut und Anteil an der altersspezifischen Bevölkerung in Deutschlan"| __truncated__ "" ...
## $ Column2 : chr "" "" "" "" ...
## $ Column3 : chr "" "" "" "" ...
## $ Column4 : chr "" "" "" "" ...
## $ Column5 : chr "" "" "" "" ...
## $ Column6 : chr "" "" "" "" ...
## $ Column7 : chr "" "" "" "" ...
## $ Column8 : chr "" "" "" "" ...
## $ Column9 : chr "" "" "" "" ...
## $ Column10: chr "" "" "" "" ...
## $ Column11: chr "" "" "" "" ...
## $ Column12: chr "" "" "" "" ...
## $ Column13: chr "" "" "" "" ...
## $ Column14: chr "" "" "" "" ...
## $ Column15: chr "" "" "" "" ...
## $ Column16: chr "" "" "" "" ...
## $ Column17: chr "" "" "" "" ...
## $ Column18: chr "" "" "" "" ...
## $ Column19: chr "" "" "" "" ...
## $ Column20: chr "" "" "" "" ...
## $ Column21: chr "" "" "" "" ...
## $ Column22: chr "" "" "" "" ...
## $ Column23: chr "" "" "" "" ...
## $ Column24: chr "" "" "" "" ...
## $ Column25: chr "" "" "" "" ...
## $ Column26: chr "" "" "" "" ...
## $ Column27: chr "" "" "" "" ...
## $ Column28: chr "" "" "" "" ...
## $ Column29: chr "" "" "" "" ...
## $ Column30: chr "" "" "" "" ...
## $ Column31: chr "" "" "" "" ...
## $ Column32: chr "" "" "" "" ...
## $ Column33: chr "" "" "" "" ...
## $ Column34: chr "" "" "" "" ...
## $ Column35: chr "" "" "" "" ...
## $ Column36: chr "" "" "" "" ...
## $ Column37: chr "" "" "" "" ...
## $ Column38: chr "" "" "" "" ...
## $ Column39: chr "" "" "" "" ...
## $ Column40: chr "" "" "" "" ...
## $ Column41: chr "" "" "" "" ...
head(data_raw)
## Column1
## 1 Tab.1.9.4
## 2
## 3 Studienanfängerinnen und Studienanfänger absolut und Anteil an der altersspezifischen Bevölkerung in Deutschland nach Fächergruppen und Studienbereichen (in internationaler Abgrenzung) 1)
## 4
## 5
## 6
## Column2 Column3 Column4
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfänger/-innen
## 6 2005 2006 2007
## Column5 Column6 Column7
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfänger/-innen
## 6 2008 2009 2010
## Column8 Column9 Column10
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfänger/-innen
## 6 2011 2012 2013
## Column11 Column12 Column13
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfänger/-innen
## 6 2014 2015 2016
## Column14 Column15 Column16
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfänger/-innen
## 6 2017 2018 2019
## Column17 Column18 Column19
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfänger/-innen
## 6 2020 2021 2022
## Column20 Column21 Column22
## 1
## 2
## 3
## 4
## 5 Studienanfänger/-innen Studienanfänger/-innen Studienanfängerquote 2)
## 6 2023 2024 2005
## Column23 Column24 Column25
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2) Studienanfängerquote 2) Studienanfängerquote 2)
## 6 2006 2007 2008
## Column26 Column27 Column28
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2) Studienanfängerquote 2) Studienanfängerquote 2)
## 6 2009 2010 2011
## Column29 Column30 Column31
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2) Studienanfängerquote 2) Studienanfängerquote 2)
## 6 2012 2013 2014
## Column32 Column33 Column34
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2) Studienanfängerquote 2) Studienanfängerquote 2)
## 6 2015 2016 2017
## Column35 Column36 Column37
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2) Studienanfängerquote 2) Studienanfängerquote 2)
## 6 2018 2019 2020
## Column38 Column39 Column40
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2) Studienanfängerquote 2) Studienanfängerquote 2)
## 6 2021 2022 2023
## Column41
## 1
## 2
## 3
## 4
## 5 Studienanfängerquote 2)
## 6 2024
colSums(is.na(data_raw))
## Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8
## 0 0 0 0 0 0 0 0
## Column9 Column10 Column11 Column12 Column13 Column14 Column15 Column16
## 0 0 0 0 0 0 0 0
## Column17 Column18 Column19 Column20 Column21 Column22 Column23 Column24
## 0 0 0 0 0 0 0 0
## Column25 Column26 Column27 Column28 Column29 Column30 Column31 Column32
## 0 0 0 0 0 0 0 0
## Column33 Column34 Column35 Column36 Column37 Column38 Column39 Column40
## 0 0 0 0 0 0 0 0
## Column41
## 0
data_clean <- data_raw %>%
slice(5:36) %>%
filter(!is.na(Column2)) %>%
filter(!Column2 %in% c(
"Fächergruppe",
"Studienbereich",
"Insgesamt",
"Übrige Wissenschaften"
))
fach <- trimws(data_clean$Column1)
werte <- data_clean[, 2:21]
werte[werte == "-"] <- NA
werte <- as.data.frame(lapply(werte, function(x) as.numeric(as.character(x))))
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
## Warning in FUN(X[[i]], ...): NAs durch Umwandlung erzeugt
jahre <- 2005:2024
colnames(werte) <- jahre
daten_clean2 <- cbind(Fach = fach, werte)
daten_long <- pivot_longer(
daten_clean2,
cols = -Fach,
names_to = "Jahr",
values_to = "Wert"
)
daten_long$Jahr <- as.numeric(daten_long$Jahr)
daten_long <- daten_long %>% filter(!is.na(Wert))
mathe <- daten_long %>% filter(Fach == "Mathematik")
plot(mathe$Jahr, mathe$Wert, type = "l")
summary(daten_long$Wert)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 118 2610 8868 39772 20126 498854
fach_trend <- daten_long %>%
group_by(Fach) %>%
summarise(
start_wert = Wert[which.min(Jahr)][1],
end_wert = Wert[which.max(Jahr)][1],
veraenderung = end_wert - start_wert,
.groups = "drop"
) %>%
arrange(desc(veraenderung))
head(fach_trend, 10)
## # A tibble: 10 × 4
## Fach start_wert end_wert veraenderung
## <chr> <dbl> <dbl> <dbl>
## 1 Insgesamt 348586 425296 76710
## 2 Übrige Wissenschaften 193971 236533 42562
## 3 Ingenieurwissenschaften 88224 109888 21664
## 4 Informatik 20958 38424 17466
## 5 Humanmedizin 15242 26148 10906
## 6 Wirtschaftsingenieurwesen mit ingenieurwiss… 4772 12484 7712
## 7 Bauingenieurwesen 6310 9144 2834
## 8 Allgemein 364 2574 2210
## 9 Biologie 8285 10348 2063
## 10 Mathematik, Naturwissenschaften 42416 43988 1572