I have a dataset full of character variables, which I want to convert to ordered factor variables. I was able to convert all variables to factors at once, but my attempt to order them ("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu", "Stimme zu", "Stimme voll zu", "k. A.") was not successful. Do you have a solution for me?
Here are my code and my data:
MD4[,1:10] <- lapply(MD4[1:10], factor)
MD4[,1:10] <- lapply(MD4[1:10], ordered(MD4[1:10],c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu", "Stimme zu", "Stimme voll zu", "k. A.")))
structure(list(veränderung_imap_austausch.verstärkt.akteuren = c("Stimme teilweise zu",
"Stimme zu", NA, NA, "Stimme teilweise zu", "Stimme zu", "Stimme zu",
"Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu",
NA, NA, NA, NA, NA, "Stimme zu", NA, NA, NA, NA, "Stimme teilweise zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "Stimme voll zu", NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme voll zu", "Stimme zu", NA, NA, NA,
"Stimme zu", "Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA,
NA, "Stimme voll zu", "Stimme teilweise zu", "Stimme zu", NA,
NA, NA, "Stimme zu", "Stimme zu", NA, "Stimme nicht zu", "Stimme zu",
NA, "Stimme teilweise zu", "Stimme zu", "Stimme teilweise zu",
NA, NA, NA, "Stimme voll zu", "Stimme voll zu", "Stimme teilweise zu",
NA, NA, NA, "Stimme voll zu", NA, "Stimme nicht zu", "Stimme zu",
NA, "Stimme zu", NA, "Stimme zu", "Stimme zu", "Stimme zu", "Stimme teilweise zu",
"Stimme teilweise zu", "Stimme teilweise zu", NA, "Stimme teilweise zu",
"k. A.", "Stimme eher nicht zu"), veränderung_imap_austausch.verstärkt.ideen = c("Stimme voll zu",
"Stimme zu", NA, NA, "Stimme teilweise zu", "Stimme zu", "Stimme zu",
"Stimme eher nicht zu", NA, NA, NA, NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme zu", NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "Stimme voll zu", NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme zu", "Stimme zu", NA, NA, NA, "Stimme zu",
"Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA, NA, "Stimme voll zu",
"Stimme zu", "Stimme voll zu", NA, NA, NA, "Stimme zu", "Stimme zu",
NA, "Stimme teilweise zu", "Stimme zu", NA, "Stimme eher nicht zu",
"Stimme zu", "Stimme zu", NA, NA, NA, "Stimme voll zu", "Stimme voll zu",
"Stimme teilweise zu", NA, NA, NA, "Stimme voll zu", NA, "Stimme zu",
"Stimme zu", NA, "Stimme zu", NA, "Stimme teilweise zu", "Stimme voll zu",
"Stimme zu", "Stimme teilweise zu", "Stimme zu", "Stimme zu",
NA, "Stimme zu", "k. A.", "Stimme teilweise zu"), veränderung_imap_fortschritt.umsetzung = c("Stimme zu",
"Stimme zu", NA, NA, "Stimme teilweise zu", "Stimme zu", "k. A.",
"Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme zu", NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "Stimme zu", NA, "Stimme zu", NA,
NA, NA, NA, NA, "Stimme voll zu", "Stimme teilweise zu", NA,
NA, NA, "Stimme zu", "Stimme teilweise zu", NA, NA, NA, NA, NA,
NA, NA, NA, "Stimme zu", "Stimme teilweise zu", "Stimme zu",
NA, NA, NA, "Stimme zu", "Stimme zu", NA, "Stimme teilweise zu",
"Stimme zu", NA, "Stimme teilweise zu", "Stimme teilweise zu",
"Stimme zu", NA, NA, NA, "Stimme voll zu", "Stimme voll zu",
"Stimme teilweise zu", NA, NA, NA, "Stimme voll zu", NA, "Stimme teilweise zu",
"Stimme teilweise zu", NA, "Stimme zu", NA, "Stimme teilweise zu",
"Stimme voll zu", "Stimme teilweise zu", "Stimme zu", "Stimme eher nicht zu",
"Stimme teilweise zu", NA, "Stimme teilweise zu", "k. A.", "Stimme teilweise zu"
), veränderung_imap_neue.strukturen = c("Stimme zu", "Stimme zu",
NA, NA, "Stimme teilweise zu", "Stimme zu", "Stimme zu", "Stimme teilweise zu",
NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, NA, NA,
NA, NA, "Stimme teilweise zu", NA, NA, NA, NA, "Stimme teilweise zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme voll zu", "Stimme teilweise zu",
NA, NA, NA, "Stimme zu", "Stimme teilweise zu", NA, NA, NA, NA,
NA, NA, NA, NA, "Stimme zu", "Stimme zu", "Stimme teilweise zu",
NA, NA, NA, "Stimme zu", "Stimme zu", NA, "Stimme teilweise zu",
"Stimme zu", NA, "Stimme teilweise zu", "Stimme zu", "Stimme zu",
NA, NA, NA, "Stimme voll zu", "Stimme zu", "Stimme teilweise zu",
NA, NA, NA, "Stimme voll zu", NA, "Stimme voll zu", "Stimme teilweise zu",
NA, "Stimme voll zu", NA, "Stimme teilweise zu", "Stimme voll zu",
"Stimme teilweise zu", "Stimme eher nicht zu", "Stimme eher nicht zu",
"Stimme eher nicht zu", NA, "Stimme eher nicht zu", "k. A.",
"Stimme nicht zu"), veränderung_imap_zuständigkeiten.klarer = c("Stimme teilweise zu",
"Stimme teilweise zu", NA, NA, "Stimme teilweise zu", "Stimme zu",
"k. A.", "Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA, "Stimme eher nicht zu",
NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, NA, NA, NA, "Stimme teilweise zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme teilweise zu", "Stimme teilweise zu",
NA, NA, NA, "Stimme teilweise zu", "Stimme teilweise zu", NA,
NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", "Stimme teilweise zu",
"Stimme zu", NA, NA, NA, "Stimme teilweise zu", "Stimme teilweise zu",
NA, "Stimme zu", "Stimme teilweise zu", NA, "Stimme teilweise zu",
"Stimme teilweise zu", "Stimme zu", NA, NA, NA, "Stimme voll zu",
"Stimme zu", "Stimme teilweise zu", NA, NA, NA, "Stimme voll zu",
NA, "Stimme eher nicht zu", "Stimme zu", NA, "Stimme teilweise zu",
NA, "Stimme teilweise zu", "Stimme teilweise zu", "Stimme teilweise zu",
"Stimme teilweise zu", "Stimme eher nicht zu", "Stimme eher nicht zu",
NA, "Stimme zu", "k. A.", "Stimme eher nicht zu"), veränderung_imap_rollen.klarer = c("Stimme teilweise zu",
"Stimme teilweise zu", NA, NA, "Stimme teilweise zu", "Stimme zu",
"k. A.", "Stimme eher nicht zu", NA, NA, NA, NA, NA, NA, NA,
"Stimme teilweise zu", NA, NA, NA, NA, NA, "Stimme teilweise zu",
NA, NA, NA, NA, "Stimme eher nicht zu", NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, "Stimme zu", NA, "Stimme zu", NA, NA, NA, NA, NA, "Stimme teilweise zu",
"Stimme nicht zu", NA, NA, NA, "Stimme teilweise zu", "Stimme teilweise zu",
NA, NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", "Stimme teilweise zu",
"Stimme nicht zu", NA, NA, NA, "Stimme zu", "Stimme teilweise zu",
NA, "Stimme zu", "Stimme nicht zu", NA, "Stimme teilweise zu",
"Stimme zu", "Stimme zu", NA, NA, NA, "Stimme voll zu", "Stimme zu",
"Stimme teilweise zu", NA, NA, NA, "Stimme voll zu", NA, "Stimme eher nicht zu",
"Stimme teilweise zu", NA, "Stimme teilweise zu", NA, "Stimme teilweise zu",
"Stimme zu", "Stimme teilweise zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme teilweise zu", NA, "Stimme zu", "k. A.", "Stimme zu"),
veränderung_imap_digitale.lösungen = c("Stimme zu", "Stimme zu",
NA, NA, "Stimme voll zu", "Stimme zu", "Stimme zu", "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, NA,
NA, NA, NA, "Stimme zu", NA, NA, NA, NA, "k. A.", NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "Stimme voll zu", NA, "Stimme zu",
NA, NA, NA, NA, NA, "Stimme voll zu", "Stimme zu", NA, NA,
NA, "Stimme zu", "Stimme teilweise zu", NA, NA, NA, NA, NA,
NA, NA, NA, "Stimme nicht zu", "Stimme teilweise zu", "Stimme zu",
NA, NA, NA, "Stimme voll zu", "Stimme voll zu", NA, "k. A.",
"Stimme voll zu", NA, "Stimme zu", "Stimme zu", "Stimme zu",
NA, NA, NA, "Stimme zu", "Stimme voll zu", "k. A.", NA, NA,
NA, "Stimme zu", NA, "Stimme nicht zu", "Stimme voll zu",
NA, "Stimme zu", NA, "Stimme zu", "Stimme voll zu", "Stimme voll zu",
"Stimme zu", "Stimme zu", "Stimme zu", NA, "Stimme zu", "k. A.",
"Stimme zu"), veränderung_imap_klarheit.prozesse = c("Stimme voll zu",
"Stimme teilweise zu", NA, NA, "Stimme zu", NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "Stimme zu", NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, "Stimme voll zu", NA, NA, "Stimme voll zu", "Stimme voll zu",
"Stimme teilweise zu", "Stimme zu", "Stimme zu", NA, "Stimme teilweise zu",
"k. A.", "Stimme zu"), veränderung_imap_weiterent.planung = c("Stimme voll zu",
"Stimme teilweise zu", NA, NA, "Stimme teilweise zu", NA,
NA, "Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, "Stimme zu", NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
"Stimme voll zu", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "Stimme zu", NA, NA, NA, NA, NA,
NA, "Stimme teilweise zu", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Stimme zu",
NA, NA, "Stimme zu", "Stimme voll zu", "Stimme teilweise zu",
"Stimme zu", "Stimme zu", NA, "Stimme teilweise zu", "k. A.",
"Stimme zu"), veränderung_imap_arbeit.relfelktieren = c("Stimme zu",
"Stimme teilweise zu", NA, NA, "Stimme zu", NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Stimme zu",
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, "Stimme voll zu", NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Stimme voll zu",
NA, NA, NA, NA, NA, NA, "Stimme teilweise zu", NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, "Stimme zu", NA, NA, "Stimme teilweise zu", "Stimme voll zu",
"Stimme teilweise zu", "Stimme zu", "Stimme zu", NA, "Stimme zu",
"k. A.", "Stimme zu")), row.names = c(NA, -114L), class = c("tbl_df",
"tbl", "data.frame"))
CodePudding user response:
The second line of code should be a lambda function
MD4[1:10] <- lapply(MD4[1:10], function(x)
ordered(x,c("Stimme nicht zu", "Stimme eher nicht zu",
"Stimme teilweise zu", "Stimme zu", "Stimme voll zu", "k. A.")))
Or can specify the levels
as
lapply(MD4[1:10], ordered,
c("Stimme nicht zu", "Stimme eher nicht zu",
"Stimme teilweise zu", "Stimme zu", "Stimme voll zu", "k. A."))
CodePudding user response:
Another possibility is using fct_relevel
from forcats
package (it is in tidyverse)
library(dpylr)
library(forcats)
df %>%
mutate(across(starts_with("veränderung"), forcats::fct_relevel, "Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu", "Stimme zu", "Stimme voll zu", "k. A."))
CodePudding user response:
With the dplyr
package, you can use mutate
with across
.
library(dplyr)
MD4 %>%
mutate(across(1:10, ordered, levels = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu", "Stimme zu", "Stimme voll zu", "k. A.")))