# BA/BIBB-Bewerbebefragung 2021 ---- # Hilfreicher R-Code zur Arbeit mit den Daten #In dieser R-Syntax sind Befehle enthalten, die die Filterführung an den Fragebogen anpassen. #Das BIBB-FDZ hat die entsprechenden Umcodierungen nicht durchgefürt, #sondern überlässt es den Nutzenden zu entscheiden, ob die entsprechenden Anpassungen durchgefürt werden sollten. # Working Directory festelsen ---- #Damit die folgende Code durchläuft muss der Datensatz im gleichen Ordner abgelegt werden, #in dem auch diese Syntax abgelegt wurde. In RStudio können Sie dazu über das Menü den entsprechenden #Befehl ausführen -- (Session--Set Working Directory -- To Source File Location). #Zusätzlich können Sie den folgenden Code anpassen: setwd("-- Ihr Dateipfad") # Hintergrundinformationen ---- #Die Daten vom BIBB-FDZ werden als Stata-Datensatz (.dta) und SPSS-Datensatz (.sav) #zur Verfügung gestellt. In diesen Programmen werden standardmäßig kategoriale Variablen, #anders behandelt als in R, indem die numerische Kodiertung mit einem zweiten Object (Werte-Label) #zusammen genutzt wird. #Kategoriale Variablen werden in der Programmiersprache R in Vectoren des Typs "factor" standardmäßig #abgespeichert, sodass mathematische Operationen mit den Werte-Labeln möglich werden (factor levels). #Technisch funktioniert dies etwas anders als bei Stata oder SPSS, sodass bei der Umwandlung der #kategorialen Variablen in factoren die numerische Kodierung der factor levels verloren geht. #Sollen die Informationen der Kodierung und der Werte-Label erhalten bleiben, müssen die Daten #als "labelled data" eingelesen werden. Dies kann insbesondere dann sinnvoll sein, wenn ein besonderes #Interesse an der Coderiung besteht und die Werte-Label für die weiteren Analysen nicht alle Informationen #enthalten oder die Datenaufbereitung auf Basis der Codierung einfacher ist (z. B. bei Klassifikationen). #Weitere Infos dazu finden Sie hier: #https://cran.r-project.org/web/packages/labelled/vignettes/intro_labelled.html #Da die meisten R-Pakete und Funktionen auf die Arbeit mit factoren ausgerichtet und labelled data #nicht unterstützen, ist die Umwandlung in factoren empfohlen. Dass BIBB-FDZ hat die Kodierung #jeweils zu Beginn in den Werte-Labels gespeichert, sodass diese auch aus den factor levels extrahiert #werden kann. #Der Folgende Code zur Anpassung der Filter wird dennoch in zwei Varianten zur Verfügung gestellt: #Variante A: Beim Einlesen der Daten Umwandlung aller kategorialen Variablen in factoren #Variante B: Nutzung von labelled data #Variante A: Beim Einlesen Umwandlung aller kategorialen Variablen in factoren ---- ## Pakete laden ---- if (!require("pacman")) install.packages("pacman") p_load(char=c("memisc", "readstata13", "descr", "forcats"), install = T) ## Daten einlesen mit den Paket readstata13 ---- dat <- read.dta13("BABIBB_Bewerbbefragung2021_suf.dta", nonint.factors=T, generate.factors = T) ## Filter Fragen 4 bis 13 ---- #Laut Fragebogen sollen die Fragen 4 bis 13 nur von Personen beantwortet werden, #die laut Frage 1 eine duale Berufsausbildung/betriebliche Ausbildung oder eine schulische Ausbildung #mit Berufsabschluss absolvieren. Dieser Filter wurde von den Befragungspersonen jedoch nicht konsequent beachtet. #Besonderheit #Frage 11 (Was glauben Sie: Wie beeinflusst die Corona-Krise Ihre Ausbildung?) und #F12 (Hat sich jemand dafür eingesetzt, dass Sie Ihre aktuelle Ausbildungsstelle bekommen haben?): #Diese Fragen wurden von allen Personen beantwortet. ### Variablenliste der umzukodierenden Variablen speichern varlist <- c("F4", "F5", "F6_monat", "F6_jahr", "F7_kldb2010_3", "F7_pr_dl", "F8", "F9_km", "F9_min", "F10a", "F10b", "F11a", "F11b", "F11c", "F11d", "F11e", "F12a", "F12b", "F12c", "F12d", "F12e", "F12f", "F13") ### Variablen unter der Bedingung F1!=1 und F2!=2 auf varlist -1 Filter umcodieren dat[dat$F1!="1. Duale Ausbildung" & dat$F1!="2. Schulische Ausbildung",varlist] <- "-1. Filter" #Für die Variablen in denen das Level -1. Filter nicht vergeben wurde wurden nun NAs gespeichert. #Diese werden im nächsten Schritt Level vergeben for(i in varlist){ dat[[i]] <- fct_na_value_to_level(dat[[i]], level= "-1. Filter") } ### Variablenliste löschen rm(varlist) ## Filter Frage 14 und Frage 15 ---- #Die Frage 14 im Fragebogen hat (per Filterführung) Personen, die angaben, aktuell keine Ausbildung zu machen, #danach gefragt, aus welchen Gründen sie aktuell keine Ausbildung machen. Im Rahmen der Prüfungen und #Aufbereitungsarbeiten hat sich gezeigt, dass dieser Filter (sowie auch weitere) nicht immer verstanden bzw. #beachtet wurde, so dass beispielsweise hier auch Personen, die aktuell eine schulische Ausbildung absolvieren, #Angaben machten. Inhaltlich kann dies durchaus Sinn ergeben, bei konsequenter Verfolgung des Filters wären diese #Angaben allerdings nicht möglich. Dies gilt ebenfalls für die Frage 15. varlist <- c("F14a", "F14b", "F14c", "F14d", "F14e", "F14f", "F14g", "F14h", "F14i", "F14j", "F14k", "F15") dat[dat$F1=="1. Duale Ausbildung" | dat$F1== "2. Schulische Ausbildung",varlist] <- "-1. Filter" rm(varlist) ## Filter Frage 25, Frage 16 und Frage 27 ---- #Die Fragen sollten laut Fragebogen nur Personen gestellt werden, denen ein Ausbildungsvertrag gekündigt wurde. #Allerdings haben auch Personen, denen kein Vertrag gekündigt wurden die Frage beantwortet. varlist <- c("F25", "F26_kldb2010_3","F26_pr_dl", "F27a", "F27b", "F27c", "F27d", "F27e") dat[dat$F24=="0. nein",varlist] <- "-1. Filter" for(i in varlist){ dat[[i]] <- fct_na_value_to_level(dat[[i]], level= "-1. Filter") } #Ggf. kann es auch sinnvoll sein, die Personen auf Filter zu setzen, die in F24 keine Angabe gemacht haben. dat[dat$F24=="-9. Keine Angabe",varlist] <- "-1. Filter" rm(varlist) ## Filter Frage 37 #Die Fragen sollten laut Fragebogen nur Personen gestellt werden, die nicht in Deutschland geboren wurden. #Allerdings haben auch Personen, angaben in Deutschland geboren worden zu sein die Frage beantwortet. dat[dat$F36=="1. ja, in Deutschland","F37"] <- "-1. Filter" ##Frage 39 #Die Fragen sollten laut Fragebogen nur Personen gestellt werden, die neben Deutsch eine andere Muttersprache haben. dat[dat$F38=="1. ja, deutsch" & dat$F39_1!="-1. Filer","F38"] <- "2. ja, deutsch mit anderer Sprache" ##Frage 40 #Es gibt die Antwortmöglichkeit "Ich habe an nichts davon teilgenommen", diese wurde allerdings auch von Personen gewählt, #die auch eine der anderen Antoertmöglichkeiten gewählt haben*/ dat[dat$F40a1=="1. ja" | dat$F40a2=="1. ja" | dat$F40b1=="1. ja" | dat$F40b2=="1. ja" | dat$F40c1=="1. ja" | dat$F40c2=="1. ja" | dat$F40d1=="1. ja" | dat$F40d2=="1. ja" | dat$F40e1=="1. ja" | dat$F40e2=="1. ja" | dat$F40f1=="1. ja" | dat$F40f2=="1. ja" | dat$F40g1=="1. ja" | dat$F40g2=="1. ja" ,"F40h"] <- "0. nein" # Variante B: Nutzung von labelled data ---- ## Pakete laden ---- if (!require("pacman")) install.packages("pacman") p_load(char=c("memisc","haven", "descr", "labelled", "sjlabelled", "readstata13"), install = T) ## Datensatz als labelled data mit dem Paket haven einlesen ---- dat <- read_dta("BABIBB_Bewerbbefragung2021_suf.dta") ## Filter Fragen 4 bis 13 ---- #Laut Fragebogen sollen die Fragen 4 bis 13 nur von Personen beantwortet werden, #die laut Frage 1 eine duale Berufsausbildung/betriebliche Ausbildung oder eine schulische Ausbildung #mit Berufsabschluss absolvieren. Dieser Filter wurde von den Befragungspersonen jedoch nicht konsequent beachtet. #Besonderheit #Frage 11 (Was glauben Sie: Wie beeinflusst die Corona-Krise Ihre Ausbildung?) und #F12 (Hat sich jemand dafür eingesetzt, dass Sie Ihre aktuelle Ausbildungsstelle bekommen haben?): #Diese Fragen wurden von allen Personen beantwortet. ### Variablenliste der umzukodierenden Variablen speichern varlist <- c("F4", "F5", "F6_mon", "F6_jahr", "F7_kldb2010_3", "F7_pr_dl", "F8", "F9_km", "F9_min", "F10", "F10_km", "F11a", "F11b", "F11c", "F11d", "F11e", "F12a", "F12b", "F12c", "F12d", "F12e", "F12f", "F12g","F12h","F13") ### Variablen unter der Bedingung F1!=1 und F2!=2 auf varlist -1 Filter umcodieren dat[dat$F1!=1 & dat$F1!=2,varlist] <- -1 ### Variablenliste löschen rm(varlist) ## Filter Frage 14 und Frage 15 ---- #Die Frage 14 im Fragebogen hat (per Filterführung) Personen, die angaben, aktuell keine Ausbildung zu machen, #danach gefragt, aus welchen Gründen sie aktuell keine Ausbildung machen. Im Rahmen der Prüfungen und #Aufbereitungsarbeiten hat sich gezeigt, dass dieser Filter (sowie auch weitere) nicht immer verstanden bzw. #beachtet wurde, so dass beispielsweise hier auch Personen, die aktuell eine schulische Ausbildung absolvieren, #Angaben machten. Inhaltlich kann dies durchaus Sinn ergeben, bei konsequenter Verfolgung des Filters wären diese #Angaben allerdings nicht möglich. Dies gilt ebenfalls für die Frage 15. varlist <- c("F14a", "F14b", "F14c", "F14d", "F14e", "F14f", "F14g", "F14h", "F14i", "F14j", "F14k", "F15") dat[dat$F1==1 | dat$F1==2,varlist] <- -1 rm(varlist) ## Filter Frage 25, Frage 16 und Frage 27 ---- #Die Fragen sollten laut Fragebogen nur Personen gestellt werden, denen ein Ausbildungsvertrag gekündigt wurde. #Allerdings haben auch Personen, denen kein Vertrag gekündigt wurden die Frage beantwortet. varlist <- c("F25", "F26_kldb2010_3_1","F26_kldb2010_3_2","F26_kldb2010_3_3","F26_pr_dl_1", "F26_pr_dl_2", "F26_pr_dl_3", "F27a", "F27b", "F27c", "F27d", "F27e") <- -1 #Ggf. kann es auch sinnvoll sein, die Personen auf Filter zu setzen, die in F24 keine Angabe gemacht haben. dat[dat$F24==-9,varlist] <- -1 rm(varlist) ## Filter Frage 37 #Die Fragen sollten laut Fragebogen nur Personen gestellt werden, die nicht in Deutschland geboren wurden. #Allerdings haben auch Personen, angaben in Deutschland geboren worden zu sein die Frage beantwortet. dat[dat$F36==1,"F37"] <- -1 ##Frage 39 #Die Fragen sollten laut Fragebogen nur Personen gestellt werden, die neben Deutsch eine andere Muttersprache haben. dat[dat$F38==1 & dat$F39_1!=-1,"F38"] <- 2 ##Frage 40 #Es gibt die Antwortmöglichkeit "Ich habe an nichts davon teilgenommen", diese wurde allerdings auch von Personen gewählt, #die auch eine der anderen Antoertmöglichkeiten gewählt haben*/ dat[dat$F40a1==1 | dat$F40a2==1 | dat$F40b1==1 | dat$F40b2==1 | dat$F40c1==1 | dat$F40c2==1 | dat$F40d1==1 | dat$F40d2==1 | dat$F40e1==1 | dat$F40e2==1 | dat$F40f1==1 | dat$F40f2==1 | dat$F40g1==1 | dat$F40g2==1 ,"F40h"] <- 0