Имам набор от данни, където колоната "работна класа" има следните стойности:
Сега ми се струва, че стойността "privat" е наистина същата като "Private" и затова бих искала да го променя съответно
Ако изпълня следната команда, получавам съобщение за грешка, защото факторът не е дефиниран.
> adult$workclass[adult$workclass == "privat"] <- "Private"
Warning message:
In `[<-.factor`(`*tmp*`, adult$workclass == "privat", value = c(7L, :
invalid factor level, NA generated
Ако аз "unfactor" на колоната и "refactor" го отново след операцията, в крайна сметка с два различни фактора за "Private".
> adult$workclass <- as.character(adult$workclass)
> adult$workclass[adult$workclass=="privat"] <- "Private"
> adult$workclass <- as.factor(adult$workclass)
> summary(adult$workclass)
Federal-gov Local-gov Never-worked Private
960 2093 7 22686
Self-emp-inc Self-emp-not-inc State-gov Without-pay
1116 2541 1298 14
Private NA"s
10 1836
Как да обединя "частен" и "частен"?
Отговори:
0 за отговор № 1Какъв е резултатът от levels(adult$workclass)
? Изглежда, че вашето ниво "Private" не е точно равно на низа "Private".
Когато изпълня следния код, получавам желания резултат:
f <- data.frame(f=factor(c(
rep("Federal-gov", 960),
rep("Local-gov", 2093),
rep("Never-worked", 7),
rep("Private", 22686),
rep("Self-emp-inc", 1116),
rep("Self-emp-not-inc", 2541),
rep("State-gov", 1298),
rep("Without-pay", 14),
rep("privat", 10),
rep("NA"s", 1836)
)))
f$f[f$f=="privat"] <- "Private"
f <- droplevels(f)
table(f)
Federal-gov Local-gov NA"s Never-worked
960 2093 1836 7
Private Self-emp-inc Self-emp-not-inc State-gov
22696 1116 2541 1298
Without-pay
14
0 за отговор № 2
Можете да опитате:
library(dplyr)
adult %>%
mutate(workclass = recode_factor(workclass, privat = "Private"))