library(tidyverse)
library(janitor)
library(readODS)
library(here)Abschlussprojekt
daten_in <- read_csv(here::here("daten/raw/ts-x-15.02.04.04_detail (2).csv")) |>
janitor::clean_names() # Spaltenbeschriftungen aus ods-Datei in csv-Datensatz einfügen
code_sex <- read_ods(here("daten/raw/ts-x-15.02.04.04_detail-APPENDIX.ods"), sheet = "SEX") |>
select(CODE, LABEL_DE)
code_uni <- read_ods(here("daten/raw/ts-x-15.02.04.04_detail-APPENDIX.ods"), sheet = "UNI") |>
select(CODE, LABEL_DE)
code_field <- read_ods(here("daten/raw/ts-x-15.02.04.04_detail-APPENDIX.ods"), sheet = "FIELD") |>
select(CODE, LABEL_DE)
code_level <- read_ods(here("daten/raw/ts-x-15.02.04.04_detail-APPENDIX.ods"), sheet = "LEVEL") |>
select(CODE, LABEL_DE)
code_period <- read_ods(here("daten/raw/ts-x-15.02.04.04_detail-APPENDIX.ods"), sheet = "PERIOD") |>
select(CODE, LABEL_DE)# Daten transformieren
daten_processed <- daten_in |>
left_join(code_sex, by = c("sex" = "CODE")) |>
select(-sex) |>
rename(sex = LABEL_DE) |>
left_join(code_uni, by = c("uni" = "CODE")) |>
select(-uni) |>
rename(uni = LABEL_DE) |>
left_join(code_field, by = c("field" = "CODE")) |>
select(-field) |>
rename(field = LABEL_DE) |>
left_join(code_level, by = c("level" = "CODE")) |>
select(-level) |>
rename(level = LABEL_DE) |>
left_join(code_period, by = c("period" = "CODE")) |>
select(-period) |>
rename(period = LABEL_DE) # Hier werden verschiedene Daten zusammengestellt, um Grafiken zu generieren
# Wieviele Frauen und Männer studieren seit 2000/01 in unterschiedlichen Feldern?
daten_processed_field_sex <- daten_processed |>
group_by(field, sex) |>
summarise(count = sum(value)) |>
mutate(prozent = count / sum(count))
# Wieviele Frauen und Männer studieren in den einzelnen Jahren?
daten_processed_projahr <- daten_processed |>
group_by(period, sex) |>
summarise(count = sum(value))bar_plot_period_sex <- ggplot(data = daten_processed_projahr,
mapping = aes(x = period, y = count, color = sex, group = sex)) +
geom_point() +
geom_line() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1),
plot.title = element_text(hjust = 0.5)) +
scale_x_discrete(labels = function(x) sub("Studienjahr ", "", x)) +
scale_y_continuous(
breaks = seq(0, 60000, by = 5000),
limits = c(0, 60000)) +
labs(
title = "Anzahl Studierende pro Studienjahr und nach Geschlecht",
x = "Studienjahr",
y = "Anzahl",
color = "Geschlecht"
)bar_plot_field_sex <- ggplot(data = daten_processed_field_sex,
mapping = aes(x = reorder(field, count), y = count, fill = sex)) +
geom_col(position = position_dodge(width = 0.9)) +
geom_text(aes(label = count),
position = position_dodge(width = 0.9),
vjust = 0.5,
hjust = -0.1,
color = "black",
size = 3) +
coord_flip() +
scale_y_continuous(labels = scales::comma) +
labs(title = "Anzahl Studierende nach Fachbereich und Geschlecht",
x = "Fachbereich",
y = "Anzahl",
fill = "Geschlecht") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))Einleitung
Das Ziel ist, aus dem Bildungsdatensatz des Bundesamts für Statistik (BFS) “Studierende an den Fachhochschulen und pädagogischen Hochschulen nach Jahr, Hochschule, Fachbereich, Studienstufe und Geschlecht” vom 27.03.2025 Erkenntnisse zu gewinnen und diese grafisch darzustellen. Dies deckt sich mit meiner aktuellen Tätigkeit, wird hier aber mit einem öffentlichen Datensatz des Bundesamts für Statistik generiert.
Daten
Die Daten “Studierende an den Fachhochschulen und pädagogischen Hochschulen nach Jahr, Hochschule, Fachbereich, Studienstufe und Geschlecht” stammen vom Bundesamt für Statistik. Die entsprechende .csv-Datei und die dazugehörende .ods-Datei sind unter folgendem Link öffentlich zugänglich: https://www.bfs.admin.ch/asset/de/ts-x-15.02.04.04_detail.
Analyseziele
Aus dem Datensatz werden folgende Erkenntnisse generiert:
- Wie viele Männer und Frauen besuchen Aus- und Weiterbildungsstudiengänge an Schweizer Hochschulen pro Studienjahr?
- Wie viele Männer und Frauen besuchen verschiedene Fachbereiche in Aus- und Weiterbildungsstudiengängen?
Daten Aufbereitung
- Datenpakete installieren
- .csv-Datensatz hochladen und bereinigen
- Spaltenbeschriftungen aus .ods-Datei in .csv-Datensatz einfügen
- Daten transformieren und zusammenstellen (daten_processed)
Daten Visualisierung
bar_plot_period_sex +
scale_x_discrete(expand = c(0.01, 0.01)) +
scale_y_continuous(expand = c(0.01, 0.01))
bar_plot_field_sex