191 lines
7.3 KiB
R

library(gtools)
library(purrr)
# Global variables
data = read.csv2("./results.csv", dec=".")
preparation.tight_barplot = function () par(mar=c(3,3,1,1)+.1)
preparation.tight_boxplot = function () par(mar=c(3,1,1,1)+.1)
# Hilfsfunktionen
draw_boxplot <- function(data, file_name, preparation, width=600, height=350, names=NA) {
png(
filename=paste("results/", file_name, ".png", sep=""),
width=width, height=height, units="px"
)
if (!missing(preparation)) {
preparation()
}
boxplot(data, horizontal=TRUE, names=names, las=1)
dev.off()
}
draw_barplot <- function(data, file_name, preparation, xlim, width=600, height=350, horizontal=FALSE, names.arg) {
png(
filename=paste("results/", file_name, ".png", sep=""),
width=width, height=height, units="px"
)
if (!missing(preparation)) {
preparation()
}
if (missing(xlim)) {
if (missing(names.arg)) {
barplot(data, horiz=horizontal,las=1)
} else {
barplot(data, horiz=horizontal,las=1, names.arg=names.arg)
}
} else {
if (missing(names.arg)) {
barplot(data, horiz=horizontal,las=1, xlim=xlim)
} else {
barplot(data, horiz=horizontal,las=1, xlim=xlim, names.arg=names.arg)
}
}
dev.off()
}
# Allgemeine Angaben
## Gesamtzahl der Teilnehmer*innen
write(nrow(data), file = "results/gesamtzahl.tex", append = FALSE)
## Studiengänge
studiengaenge.abs = table(data$studiengang, useNA="no", exclude=c(""))
studiengaenge.rel = table(data$studiengang, exclude=c(""))/nrow(data)
studiengaenge.preparation = function () par(mar=c(3,24,1,2)+.1)
draw_barplot(studiengaenge.abs, "studiengaenge", preparation=studiengaenge.preparation, horiz=TRUE, names.arg = rownames(studiengaenge.abs))
## Fachsemester
fachsemester = ceiling(data$fachsemester)
preparation = function () par(mar=c(3,3,1,1)+.1)
draw_barplot(table(fachsemester), "fachsemester", preparation=preparation.tight_barplot, width=700, height=300)
draw_boxplot(fachsemester, "fachsemester-boxplot", width=700, height=150, preparation=preparation.tight_boxplot)
## Unisemester
unisemester = nrow(subset(data, unisemester=="Ja"))
write(unisemester, file = "results/erstes_unisemester.tex", append = FALSE)
## Vollzeit vs. Teilzeit
data.vz = subset(data, vollzeit=="Ja")
data.tz = subset(data, vollzeit=="Nein")
data.vz.table = table(data$vollzeit)
draw_barplot(data.vz.table, "vollzeit-vs-teilzeit", width=600, height=250, names = c("Ja", "Keine Antwort", "Nein"))
## ECTS
# data.vz.mean_ects = mean(subset(data.vz, ects != "NA")$ects)
# data.tz.mean_ects = mean(subset(data.tz, ects != "NA")$ects)
draw_boxplot(data.vz$ects, "ects-boxplot-vollzeit", width=700, height=150, preparation=preparation.tight_boxplot)
draw_boxplot(data.tz$ects, "ects-boxplot-teilzeit", width=700, height=150, preparation=preparation.tight_boxplot)
draw_barplot(table(round(data.vz$ects)), "ects-barchart-vollzeit", width=700, height=300, preparation=preparation.tight_barplot)
draw_barplot(table(round(data.tz$ects)), "ects-barchart-teilzeit", width=700, height=200, preparation=preparation.tight_barplot)
# Persönliche Belastung
## Arbeitsbelastung
draw_barplot(table(data$arbeitsbelastung), "arbeitsbelastung-barchart", width=400, height=300)
draw_boxplot(data$arbeitsbelastung, "arbeitsbelastung-boxplot", width=400, height=300)
## Gründe
mehr_ects = nrow(subset(data, gruende.SQ001.=="Ja"))
weniger_ects = nrow(subset(data, gruende.SQ005.=="Ja"))
mehr_nebenberuf = nrow(subset(data, gruende.SQ002.=="Ja"))
weniger_nebenberuf = nrow(subset(data, gruende.SQ006.=="Ja"))
mehr_anforderungen = nrow(subset(data, gruende.SQ004.=="Ja"))
weniger_anforderungen = nrow(subset(data, gruende.SQ007.=="Ja"))
mehr_technik = nrow(subset(data, gruende.SQ003.=="Ja"))
weniger_pendeln = nrow(subset(data, gruende.SQ008.=="Ja"))
anderes = nrow(subset(data, gruende.other.!=""))
gruende.werte = c(mehr_ects, mehr_nebenberuf, mehr_anforderungen, mehr_technik, weniger_ects, weniger_nebenberuf, weniger_anforderungen, weniger_pendeln, anderes)
gruende.label = c(
"höhere ECTS-Anzahl",
"höhere Belastung im Nebenberuf",
"erhöhte Anforderungen seitens der Modulverantwortlichen",
"techn. Zusatzaufwand f. Teilnahme a. d. Lehrveranstaltungen",
"geringere ECTS-Anzahl",
"geringere Belastung im Nebenberuf",
"geringere Anforderungen seitens der Modulverantwortlichen",
"Pendelwege entfallen",
"Sonstiges"
)
gruende.tabelle = array(gruende.werte, dimnames=list(gruende.label))
gruende.preparation = function ()
par(mar=c(3,24,1,2)+.1)
draw_barplot(gruende.werte, "arbeitsbelastung-gruende-barchart", horizontal=TRUE, gruende.preparation, names.arg=gruende.label)
## Aussagen
a1 <- which(colnames(data)=="aussagen.SQ001." )
a2 <- which(colnames(data)=="aussagen.SQ008." )
aussagen = data[a1:a2]
draw_boxplot(aussagen, "aussagen-boxplots",
names=c(
"A",# "Ich fühle mich durch das Studieren von zu Hause aus gestresst.",
"B",# "Ich kann meinen Studienalltag weitestgehend flexibel gestalten.",
"C",# "Ohne feste Termine fällt es mir schwer, über längere Zeiträume fokussiert zu arbeiten.",
"D",# "Der fehlende Kontakt zu Kommiliton*innen senkt meine Motivation, mir Vorlesungen anzuschauen.",
"E",# "Lerngruppen zu bilden ist in diesem Semester leichter als zuvor.",
"F",# "Ich empfinde die Situation im Homeoffice als beengend.",
"G",# "Mit meinem bisherigen Lernfortschritt seit Semesterbeginn bin ich insgesamt zufrieden.",
"H" # "Meine schlechte Internetverbindung erschwert das Studieren."
)
)
for (column in 1:8) {
draw_boxplot(aussagen[column], paste("aussagen-boxplot-", chr(64 + column), sep=""), width=400, height=300)
draw_barplot(table(aussagen[column]), paste("aussagen-barchart-", chr(64 + column), sep=""), names.arg=c(1, 2, 3, 4, 5), width=400, height=300)
}
# Modulangebot
## Ausfall
modulausfall.betroffene = subset(data, ausfall=="Ja")
write(nrow(modulausfall.betroffene), file="results/betroffene-modulwegfall.tex", append = FALSE)
modulausfall.studiendauer.ja = subset(modulausfall.betroffene, studiendauer=="Ja, meine Studiendauer wird voraussichtlich länger als geplant sein.")
write(nrow(modulausfall.studiendauer.ja), file="results/betroffene-studiendauer.tex", append = FALSE)
modulausfall.studiendauer.nein = subset(modulausfall.betroffene, studiendauer=="Nein, das trifft auf mich nicht zu.")
write(nrow(modulausfall.studiendauer.nein), file="results/betroffene-studiendauer-nein.tex", append = FALSE)
modulausfall.wi = nrow(subset(modulausfall.betroffene, studiengang=="M. Sc. Wirtschaftsinformatik"
| studiengang=="B. Sc. International Information Systems Management"
| studiengang=="B. Sc. Wirtschaftsinformatik"
| studiengang=="M. Sc. International Information Systems Management"))
zoom_users = subset(data, technologien.1. == "Zoom"
| technologien.2. == "Zoom" | technologien.3. == "Zoom"
| technologien.4. == "Zoom" | technologien.5. == "Zoom"
| technologien.6. == "Zoom" | technologien.7. == "Zoom"
| technologien.8. == "Zoom" | technologien.9. == "Zoom")
zoom_users.total = nrow(zoom_users)
zoom_users.criteria_satisfied = nrow(subset(zoom_users, zoombesorgnis == "Ja."))
zoom_users.criteria_not_satisfied = nrow(subset(zoom_users, zoombesorgnis == "Nein."))
# barplot(studiengaenge.rel, horiz=TRUE, legend=c("B. Sc. WI", "B. Sc. AI", …))
# pie(studiengaenge.rel, horiz=TRUE, legend=c("B. Sc. WI", "B. Sc. AI", …))
# boxplot(data$ects~data$vollzeit)