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) ## Bachelor-Erstis erstis = nrow(subset(data, fachsemester == 1 & ( studiengang == "B. Sc. Wirtschaftsinformatik" | studiengang == "B. Sc. Angewandte Informatik" | studiengang == "B. Sc. Informatik: Software Systems Science" | studiengang == "B. Sc. International Information Systems Management" ) )) write(erstis, file="results/erstis-bachelor.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(2,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(1,3,1,1)+.1) draw_barplot(table(fachsemester), "fachsemester", preparation=preparation.tight_barplot, width=800, height=300) draw_boxplot(fachsemester, "fachsemester-boxplot", width=800, 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) data.vz.preparation = function () par(mar=c(3, 8, 1, 3)) draw_barplot(data.vz.table, "vollzeit-vs-teilzeit", width=600, height=180, names = c("Ja", "Keine Antwort", "Nein"), preparation=data.vz.preparation, horizontal=TRUE) ## 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 arbeitsbelastung.preparation = function () par(mar=c(2,2,1,1)+.1) draw_barplot(table(data$arbeitsbelastung), "arbeitsbelastung-barchart", preparation=arbeitsbelastung.preparation, width=400, height=300) draw_boxplot(data$arbeitsbelastung, "arbeitsbelastung-boxplot", preparation=arbeitsbelastung.preparation, 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")) # Unterrichtsformen und Technologien ## Lehrmethoden lehrmethoden.audiovl = table(data$lehrmethoden.SQ001.)["Ja"] lehrmethoden.videovl = table(data$lehrmethoden.SQ002.)["Ja"] lehrmethoden.podcast = table(data$lehrmethoden.SQ003.)["Ja"] lehrmethoden.textchat = table(data$lehrmethoden.SQ004.)["Ja"] lehrmethoden.videochat = table(data$lehrmethoden.SQ005.)["Ja"] lehrmethoden.table = array(c( lehrmethoden.audiovl, lehrmethoden.videovl, lehrmethoden.podcast, lehrmethoden.textchat, lehrmethoden.videochat ), dimnames=list(c( "Audio-Vorlesung", "Video-Vorlesung", "Podcast (nur Audio)", "Textchat", "Interaktiver Audio-/Videochat" ))) lehrmethoden.preparation = function () par(mar=c(3, 14, 1, 3)+.1) draw_barplot(lehrmethoden.table, "lehrmethoden", horizontal=TRUE, preparation=lehrmethoden.preparation, height=200) ## Technologien technologien.labels = c( "Microsoft Teams", "Panopto / sonstiger Videoupload", "Zoom", "VC-Foren", "Big Blue Button", "Rocket.Chat", "DFNconf", "Skype", "Sonstige" ) technologien.table = array(c(0, 0, 0, 0, 0, 0, 0, 0, 0), dimnames=list(technologien.labels)) technologien.preparation=function () par(mar=c(3,14,1,3)+.1) for (x in c(1:9)) { t = table(data[paste("technologien.", x, ".", sep="")], exclude = c("")) draw_barplot(sort(t), paste("technologien-", x, sep=""), horizontal=TRUE, preparation=technologien.preparation, height=30*nrow(t)+50) for (label in technologien.labels) { if (label %in% names(t)) { technologien.table[label] = technologien.table[label] + t[label] } } } draw_barplot(sort(technologien.table), "technologien-gesamt", horizontal=TRUE, preparation=technologien.preparation) ## Zoombesorgnis 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) write(zoom_users.total, file = "results/zoom-users.tex", append = FALSE) zoom_users.worried = nrow(subset(data, zoombesorgnis == "Ja.")) write(zoom_users.worried, file = "results/zoom-users-worried.tex", append = FALSE) zoom_users.not_worried = nrow(subset(data, zoombesorgnis == "Nein.")) write(zoom_users.not_worried, file = "results/zoom-users-not-worried.tex", append = FALSE) ## Zoomteilnahme zoom_users.criteria_satisfied = nrow(subset(data, zoomteilnahme == "Die Lehrveranstaltungen erfüllen überwiegend eines oder beide der Kriterien.")) write(zoom_users.criteria_satisfied, file = "results/zoom-users-criteria-satisfied.tex", append = FALSE) zoom_users.criteria_not_satisfied = nrow(subset(data, zoomteilnahme == "Die Lehrveranstaltungen erfüllen überwiegend keines der Kriterien.")) write(zoom_users.criteria_not_satisfied, file = "results/zoom-users-criteria-not-satisfied.tex", append = FALSE) # 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)