Kapitel 51 Unterschiedliche Methoden Beschriftung der Werte

Etiketten anbringen ist wichtig. Doch beim Speichern von Daten werden Etiketten (Labels) schnell einmal zum Albtraum).

Es gibt verschiedene Möglichkeiten, wie man diese Daten am besten beschriftet (labelled). Wenn wir nur mit R arbeiten (d.h. speichern der Daten als .rda oder rdata), können wir die Variable direkt als Factor erstellen mit den levels und labels (siehe im nächsten Code-Chunk):

set.seed(123)
Likert_Item_mit_neutraler_Mitte_1<-sample(c(
                        5, 
                        4, 
                        3,
                        2,
                        1), size=200, replace=TRUE, prob=c(0.1,0.2,0.25,0.15,0.1))
summarytools::freq(Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## Likert_Item_mit_neutraler_Mitte_1  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1     20     10.00          10.00     10.00          10.00
##           2     40     20.00          30.00     20.00          30.00
##           3     58     29.00          59.00     29.00          59.00
##           4     55     27.50          86.50     27.50          86.50
##           5     27     13.50         100.00     13.50         100.00
##        <NA>      0                               0.00         100.00
##       Total    200    100.00         100.00    100.00         100.00
Likert_Item_mit_neutraler_Mitte_1<-factor(Likert_Item_mit_neutraler_Mitte_1, levels=c(1,2,3,4,5), 
                                          labels=c("Sehr unzufrieden",
                                                   "Etwas unzufrieden", 
                                                   "Weder zufrieden noch unzufrieden", 
                                                   "Etwas zufrieden",
                                                   "Sehr zufrieden" ))
                                                                              
summarytools::freq(Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## Likert_Item_mit_neutraler_Mitte_1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00

Wenn wir dies nun als R Daten speichern (.rda), wird die Reihenfolge der Levels im Faktor gleich bleiben.

df<-data.frame(id=1:200,Likert_Item_mit_neutraler_Mitte_1)
rio::export(df, "R_Daten.Rdata")
df<-rio::import("R_Daten.Rdata")
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte_1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00

Falls wir jedoch diese Datein in einem anderen Format speichern, wie zum Beispiel in einem csv, so verliereen wir Informationen. Zum Beweis speichern wir diese Daten als csv und laden sie wieder. Wir sehen in der Tabelle, dass jetzt die Reihenfolge nicht mehr gleich ist, da R nun die Daten einfach als character Variable behandelt und alphabetisch ordnet. Wir müssten die Variable jetzt wieder neu ordnen, was ziemlich mühsam ist.

summarytools::freq(df$Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte_1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00
rio::export(df, "csv_Daten.csv")
df<-rio::import("csv_Daten.csv", sep=",")
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte_1  
## Type: Character  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                      Etwas unzufrieden     40     20.00          20.00     20.00          20.00
##                        Etwas zufrieden     55     27.50          47.50     27.50          47.50
##                       Sehr unzufrieden     20     10.00          57.50     10.00          57.50
##                         Sehr zufrieden     27     13.50          71.00     13.50          71.00
##       Weder zufrieden noch unzufrieden     58     29.00         100.00     29.00         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00
df$Likert_Item_mit_neutraler_Mitte_1<-factor(df$Likert_Item_mit_neutraler_Mitte_1, levels=c("Sehr unzufrieden","Etwas unzufrieden", "Weder zufrieden noch unzufrieden","Etwas zufrieden", "Sehr zufrieden"))
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte_1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00

Achtung: schreibt man den Befehl falsch, indem man anstatt levels labels schreibt, kann man die Daten zerstören und einen schwerwiegenden Fehler einfügen (Jetzt wurden die Labels einfach umgeschrieben und die Zahlen stimmen natürlich nicht mehr):

df<-rio::import("csv_Daten.csv", sep=",")
df$falsch_Likert_Item_mit_neutraler_Mitte_1<-factor(df$Likert_Item_mit_neutraler_Mitte_1, labels=c("Sehr unzufrieden","Etwas unzufrieden", "Weder zufrieden noch unzufrieden","Etwas zufrieden", "Sehr zufrieden"))

summarytools::freq(df$falsch_Likert_Item_mit_neutraler_Mitte_1)
## Frequencies  
## df$falsch_Likert_Item_mit_neutraler_Mitte_1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden     40     20.00          20.00     20.00          20.00
##                      Etwas unzufrieden     55     27.50          47.50     27.50          47.50
##       Weder zufrieden noch unzufrieden     20     10.00          57.50     10.00          57.50
##                        Etwas zufrieden     27     13.50          71.00     13.50          71.00
##                         Sehr zufrieden     58     29.00         100.00     29.00         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00

Das gleiche mit dem Stata Datenformat: Für Stata darf man allerdings nur Variablennamen mit 32 Zeichen haben, deswegen müssen wir die Variable etwas kürzen. Hier sehen wir, dass die Information der Labels komplett verloren geht, die Labels sind jetzt nur noch Nummern (wie wir die Variabel eigentlich ursprünglich erstellt haben).

df<-data.frame(id=1:200,Likert_Item_mit_neutraler_Mitte_1)

names(df)[2]<-"Likert_Item_mit_neutraler_Mitte1"

summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                   <NA>      0                               0.00         100.00
##                                  Total    200    100.00         100.00    100.00         100.00
rio::export(df, "Stata_Daten.dta")
df<-rio::import("Stata_Daten.dta")
str(df)
## 'data.frame':    200 obs. of  2 variables:
##  $ id                              : num  1 2 3 4 5 6 7 8 9 10 ...
##   ..- attr(*, "format.stata")= chr "%12.0g"
##  $ Likert_Item_mit_neutraler_Mitte1: num  3 1 4 5 5 3 4 5 4 4 ...
##   ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "labels")= Named num [1:5] 1 2 3 4 5
##   .. ..- attr(*, "names")= chr [1:5] "Sehr unzufrieden" "Etwas unzufrieden" "Weder zufrieden noch unzufrieden" "Etwas zufrieden" ...
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1     20     10.00          10.00     10.00          10.00
##           2     40     20.00          30.00     20.00          30.00
##           3     58     29.00          59.00     29.00          59.00
##           4     55     27.50          86.50     27.50          86.50
##           5     27     13.50         100.00     13.50         100.00
##        <NA>      0                               0.00         100.00
##       Total    200    100.00         100.00    100.00         100.00
df$Likert_Item_mit_neutraler_Mitte1<-factor(df$Likert_Item_mit_neutraler_Mitte1, levels=c("Sehr unzufrieden","Etwas unzufrieden", "Weder zufrieden noch unzufrieden","Etwas zufrieden", "Sehr zufrieden"))
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Factor  
## 
##                                          Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## -------------------------------------- ------ --------- -------------- --------- --------------
##                       Sehr unzufrieden      0                               0.00           0.00
##                      Etwas unzufrieden      0                               0.00           0.00
##       Weder zufrieden noch unzufrieden      0                               0.00           0.00
##                        Etwas zufrieden      0                               0.00           0.00
##                         Sehr zufrieden      0                               0.00           0.00
##                                   <NA>    200                             100.00         100.00
##                                  Total    200      0.00         100.00    100.00         100.00

Um dieses Problem zu umgehen, könnten wir die Variablen auch wie folgt erstellen:

set.seed(123)
Likert_Item_mit_neutraler_Mitte_1<-sample(c(
                        "5_Sehr zufrieden", 
                        "4_Etwas zufrieden", 
                        "3_Weder zufrieden noch unzufrieden",
                        "2_Etwas unzufrieden",
                        "1_Sehr unzufrieden"), size=200, replace=TRUE, prob=c(0.1,0.2,0.25,0.15,0.1))

Und jetzt wieder, als Test, als Stata Daten exportieren und wieder zurück importieren: Wenn wir die Variable so erstellt haben wie im obigen Code-Chunk, werden die Daten einfach als character (String) exportiert.

df<-data.frame(id=1:200,Likert_Item_mit_neutraler_Mitte_1)
str(df)
## 'data.frame':    200 obs. of  2 variables:
##  $ id                               : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Likert_Item_mit_neutraler_Mitte_1: chr  "3_Weder zufrieden noch unzufrieden" "1_Sehr unzufrieden" "4_Etwas zufrieden" "5_Sehr zufrieden" ...
names(df)[2]<-"Likert_Item_mit_neutraler_Mitte1"
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Character  
## 
##                                            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ---------------------------------------- ------ --------- -------------- --------- --------------
##                       1_Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      2_Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       3_Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        4_Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         5_Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                     <NA>      0                               0.00         100.00
##                                    Total    200    100.00         100.00    100.00         100.00
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Character  
## 
##                                            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ---------------------------------------- ------ --------- -------------- --------- --------------
##                       1_Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      2_Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       3_Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        4_Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         5_Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                     <NA>      0                               0.00         100.00
##                                    Total    200    100.00         100.00    100.00         100.00
rio::export(df, "Stata_Daten.dta")
df<-rio::import("Stata_Daten.dta")
str(df)
## 'data.frame':    200 obs. of  2 variables:
##  $ id                              : num  1 2 3 4 5 6 7 8 9 10 ...
##   ..- attr(*, "format.stata")= chr "%12.0g"
##  $ Likert_Item_mit_neutraler_Mitte1: chr  "3_Weder zufrieden noch unzufrieden" "1_Sehr unzufrieden" "4_Etwas zufrieden" "5_Sehr zufrieden" ...
##   ..- attr(*, "format.stata")= chr "%-9s"
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Character  
## 
##                                            Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ---------------------------------------- ------ --------- -------------- --------- --------------
##                       1_Sehr unzufrieden     20     10.00          10.00     10.00          10.00
##                      2_Etwas unzufrieden     40     20.00          30.00     20.00          30.00
##       3_Weder zufrieden noch unzufrieden     58     29.00          59.00     29.00          59.00
##                        4_Etwas zufrieden     55     27.50          86.50     27.50          86.50
##                         5_Sehr zufrieden     27     13.50         100.00     13.50         100.00
##                                     <NA>      0                               0.00         100.00
##                                    Total    200    100.00         100.00    100.00         100.00

Dies funktioniert nur, wenn wir die Variable vor dem exportieren nicht als Factor formatiert haben. Wenn wir die Variable zuvor als Faktor speichern, wird es nicht gehen.

Was läuft da schief? Wir haben die Variable im vorletzten Code-Chunk zur Factor Variable geändert. Eine Factor Variable hat im Hintergrund die Nummern 1 bis n (aufsteigende Zahl für jedes Level). Die Labels sind immer noch da, das sehen wir mit dem str(df) Befehl, aber wir müssen R explizit anweisen, diese zu nutzen. Das ist etwas komplex, mehr Infos hier (hier klicken) Bei mir funktioniert es nicht - verstehe jedoch noch nicht warum. Working on it.

set.seed(123)
Likert_Item_mit_neutraler_Mitte1<-sample(c(
                        "5_Sehr zufrieden", 
                        "4_Etwas zufrieden", 
                        "3_Weder zufrieden noch unzufrieden",
                        "2_Etwas unzufrieden",
                        "1_Sehr unzufrieden"), size=200, replace=TRUE, prob=c(0.1,0.2,0.25,0.15,0.1))
Likert_Item_mit_neutraler_Mitte1<-factor(Likert_Item_mit_neutraler_Mitte1, levels=c("1_Sehr unzufrieden","2_Etwas unzufrieden", "3_Weder zufrieden noch unzufrieden","4_Etwas zufrieden","5_Sehr zufrieden"),
labels=c("Sehr unzufrieden","Etwas unzufrieden", "Weder zufrieden noch unzufrieden", "Etwas zufrieden","Sehr zufrieden" ))
Likert_Item_mit_neutraler_Mitte1<-haven::labelled(Likert_Item_mit_neutraler_Mitte1)
df<-data.frame(id=1:200,Likert_Item_mit_neutraler_Mitte1)
str(df$Likert_Item_mit_neutraler_Mitte1)
##  int+lbl [1:200] 3, 1, 4, 5, 5, 3, 4, 5, 4, 4, 5, 4, 2, 2, 3, 5, 3, 3, 4, 5...
labels(df$Likert_Item_mit_neutraler_Mitte1)
##   [1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"   "10"  "11"  "12" 
##  [13] "13"  "14"  "15"  "16"  "17"  "18"  "19"  "20"  "21"  "22"  "23"  "24" 
##  [25] "25"  "26"  "27"  "28"  "29"  "30"  "31"  "32"  "33"  "34"  "35"  "36" 
##  [37] "37"  "38"  "39"  "40"  "41"  "42"  "43"  "44"  "45"  "46"  "47"  "48" 
##  [49] "49"  "50"  "51"  "52"  "53"  "54"  "55"  "56"  "57"  "58"  "59"  "60" 
##  [61] "61"  "62"  "63"  "64"  "65"  "66"  "67"  "68"  "69"  "70"  "71"  "72" 
##  [73] "73"  "74"  "75"  "76"  "77"  "78"  "79"  "80"  "81"  "82"  "83"  "84" 
##  [85] "85"  "86"  "87"  "88"  "89"  "90"  "91"  "92"  "93"  "94"  "95"  "96" 
##  [97] "97"  "98"  "99"  "100" "101" "102" "103" "104" "105" "106" "107" "108"
## [109] "109" "110" "111" "112" "113" "114" "115" "116" "117" "118" "119" "120"
## [121] "121" "122" "123" "124" "125" "126" "127" "128" "129" "130" "131" "132"
## [133] "133" "134" "135" "136" "137" "138" "139" "140" "141" "142" "143" "144"
## [145] "145" "146" "147" "148" "149" "150" "151" "152" "153" "154" "155" "156"
## [157] "157" "158" "159" "160" "161" "162" "163" "164" "165" "166" "167" "168"
## [169] "169" "170" "171" "172" "173" "174" "175" "176" "177" "178" "179" "180"
## [181] "181" "182" "183" "184" "185" "186" "187" "188" "189" "190" "191" "192"
## [193] "193" "194" "195" "196" "197" "198" "199" "200"
levels(df$Likert_Item_mit_neutraler_Mitte1)
## NULL
df<-haven::as_factor(df)
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Factor  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1     20     10.00          10.00     10.00          10.00
##           2     40     20.00          30.00     20.00          30.00
##           3     58     29.00          59.00     29.00          59.00
##           4     55     27.50          86.50     27.50          86.50
##           5     27     13.50         100.00     13.50         100.00
##        <NA>      0                               0.00         100.00
##       Total    200    100.00         100.00    100.00         100.00
rio::export(df, "Stata_Daten.dta")
df<-(rio::import("Stata_Daten.dta"))
str(df)
## 'data.frame':    200 obs. of  2 variables:
##  $ id                              : num  1 2 3 4 5 6 7 8 9 10 ...
##   ..- attr(*, "format.stata")= chr "%12.0g"
##  $ Likert_Item_mit_neutraler_Mitte1: num  3 1 4 5 5 3 4 5 4 4 ...
##   ..- attr(*, "format.stata")= chr "%10.0g"
##   ..- attr(*, "labels")= Named num [1:5] 1 2 3 4 5
##   .. ..- attr(*, "names")= chr [1:5] "1" "2" "3" "4" ...
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Numeric  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1     20     10.00          10.00     10.00          10.00
##           2     40     20.00          30.00     20.00          30.00
##           3     58     29.00          59.00     29.00          59.00
##           4     55     27.50          86.50     27.50          86.50
##           5     27     13.50         100.00     13.50         100.00
##        <NA>      0                               0.00         100.00
##       Total    200    100.00         100.00    100.00         100.00

Dies funktioniert schon mal nicht siehe

df<-(haven::read_dta("Stata_Daten.dta"))
df$Likert_Item_mit_neutraler_Mitte1<-haven::labelled(df$Likert_Item_mit_neutraler_Mitte1)
df$Likert_Item_mit_neutraler_Mitte1<-as.factor(df$Likert_Item_mit_neutraler_Mitte1)
levels(df$Likert_Item_mit_neutraler_Mitte1)
## [1] "1" "2" "3" "4" "5"
names(attr(df, "names"))
## NULL
str(df)
## tibble [200 × 2] (S3: tbl_df/tbl/data.frame)
##  $ id                              : num [1:200] 1 2 3 4 5 6 7 8 9 10 ...
##   ..- attr(*, "format.stata")= chr "%12.0g"
##  $ Likert_Item_mit_neutraler_Mitte1: Factor w/ 5 levels "1","2","3","4",..: 3 1 4 5 5 3 4 5 4 4 ...
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Factor  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1     20     10.00          10.00     10.00          10.00
##           2     40     20.00          30.00     20.00          30.00
##           3     58     29.00          59.00     29.00          59.00
##           4     55     27.50          86.50     27.50          86.50
##           5     27     13.50         100.00     13.50         100.00
##        <NA>      0                               0.00         100.00
##       Total    200    100.00         100.00    100.00         100.00

Irgendwie lädt rio::import die labels nicht korrekt. Ich muss zuerst noch verstehen warum. Weil im Stata .dta File sind die Labels drin. Auch nach dem importieren ist die Information auch noch drin, das sieht man mit dem obigen str(df) Befehl.

names(attr(df$Likert_Item_mit_neutraler_Mitte1, "values"))
## NULL
labelled::val_labels(df$Likert_Item_mit_neutraler_Mitte1)
## NULL
summarytools::freq(df$Likert_Item_mit_neutraler_Mitte1)
## Frequencies  
## df$Likert_Item_mit_neutraler_Mitte1  
## Type: Factor  
## 
##               Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
##           1     20     10.00          10.00     10.00          10.00
##           2     40     20.00          30.00     20.00          30.00
##           3     58     29.00          59.00     29.00          59.00
##           4     55     27.50          86.50     27.50          86.50
##           5     27     13.50         100.00     13.50         100.00
##        <NA>      0                               0.00         100.00
##       Total    200    100.00         100.00    100.00         100.00
attr(df$Likert_Item_mit_neutraler_Mitte1, "names")
## NULL

Manchmal nervt R und die eigene Inkompetenz (vor allem in dieser Kombination). Doch Alkohol ist nie eine Lösung. Ende des Kapitels