Мне нужно было бы заменить уровни нескольких факторов в одном фрейме данных, чтобы они были унифицированы. Они, например, уровни в одном из этих факторов:Замена уровней нескольких факторов
> levels(workco[,5])
[1] " " "1" "2"
[4] "kóko" "kesätyö" "Kesätyö kokoaika"
[7] "koko" "kokop" "kokop."
[10] "Kokopäivä" "kokopäiväinen" "Kokopäiväinen"
[13] "kokopäiväinen/osa-aikainen" "kokopäivänen" "kokp"
[16] "kokp." "Kokp." "osa-aik"
[19] "Osa-aik/Kokopäiv." "osa-aik." "Osa-aik."
[22] "osa-aikainen" "Osa-aikainen" "osa-aikainen/kokopäiväinen"
[25] "Osa/kokoaikainen" "Osap."
Скажут, у меня есть 12 столбцов, которые являются всеми факторами, и они имеют разные названия уровней, относящиеся к тем же значениям выраженно по-разному: как вы могут видеть из примера, многие из них показывают одинаковые буквы в названиях уровней: koko, kok, kokop
... Есть три уровня, которые я хочу получить, объединив: kokop
, и kes
. Также уровни, названные в честь номеров 1
и 2
, должны быть перекодированы в kokop
и osa
соответственно.
До сих пор все, что я пробовал, не работает, я боюсь, что это потому, что я думаю более сложным способом, чем это на самом деле: я пробовал циклы, используя функцию adist()
, а также grep()
отдельно, но я получаю найти ошибки. Например:
code <- c("kok","osa","ma","kes",1,2," ")
list.names <- c("1", "2", "3", "4", "5", "6","7","8","9","10","11","12")
mylist <- vector("list", length(list.names))
names(mylist) <- list.names
D <- mylist
index <- mylist
for (i in ncol(workco2)){
D[[i]] <- adist(workco2[,i],code,ignore.case=TRUE)
index[[i]] <- lapply(D[[i]],which.min)
workco2[,i] <- data.frame(code[index[[i]]])
}
и это сообщение об ошибке:
Error in code[index[[i]]] : invalid subscript type 'list'
Не могли бы вы быть так добры намекнуть мне, как бы вы ее решить? Наверное, намного проще, чем я думаю =/Спасибо заранее!
[Минимальная воспроизводимая пример] (http://stackoverflow.com/a/5963610/1412059) и ожидаемые результаты, пожалуйста , Что нужно делать со смешанными уровнями, такими как «kokopäiväinen/osa-aikainen»? – Roland
Извините, Роланд, просто вставил сообщение об ошибке. Смешанные уровни должны быть закодированы как «osa», или «kes», если они появятся, будучи выбраны «kes», если osa/kes показывают вместе. –
@ Джина Цеткин. Помогли ли наши ответы? –