Ho un set di dati, in cui la colonna "workclass" ha i seguenti valori:
Ora mi sembra che il valore "privat" sia davvero lo stesso di "Privato" e quindi vorrei cambiarlo di conseguenza
Se eseguo il comando seguente ricevo un messaggio di errore perché il fattore non è definito.
> adult$workclass[adult$workclass == "privat"] <- "Private"
Warning message:
In `[<-.factor`(`*tmp*`, adult$workclass == "privat", value = c(7L, :
invalid factor level, NA generated
Se "decomprimere" la colonna e "refattarla" nuovamente dopo l'operazione, finisco con due diversi fattori per "Privato".
> 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
Come posso unire "privat" e "Private"?
risposte:
0 per risposta № 1Qual è l'output di levels(adult$workclass)
? Sembra che il tuo livello "Privato" non sia esattamente uguale alla stringa "Privato".
Quando eseguo il seguente codice, ottengo il risultato desiderato:
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 per risposta № 2
Puoi provare:
library(dplyr)
adult %>%
mutate(workclass = recode_factor(workclass, privat = "Private"))