Reputation: 321
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"))
Upvotes: 2
Views: 247
Reputation: 78917
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."))
Upvotes: 2
Reputation: 19097
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.")))
Upvotes: 1
Reputation: 886938
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."))
Upvotes: 2