variable tipo reordenar por ordenar objetos numero niveles factores factor example convertir cambiar r r-factor

tipo - ordenar factores en r



Renombrar un nivel de un factor en R (2)

Estoy intentando cambiar el nombre del nivel A de la column1 en el df marco de datos en R. Mi enfoque actual es este:

levels(df[!is.na(df$column1) & df$column1 == ''A'',]) <- ''B''

que no arroja ningún error o advertencia pero es completamente ineficaz.

B no es un nivel ya existente (lo que de prueba y error llegué a sospechar que era importante), por lo que lo siguiente, mi primer intento, tampoco funcionó

df[!is.na(df$column1) & df$column1 == ''A'', ''column1''] <- ''B''

¿Alguien podría guiarme hacia el enfoque correcto?


Iba a sugerir

levels(df$column1)[levels(df$column1)=="A"] <- "B"

o use la función de utilidad plyr::revalue :

library("plyr") df <- transform(df, column1=revalue(column1,c("A"="B")))

transform() es un poco de azúcar que no es necesario; puede usar df$column1 <- revalue(df$column1(...))

Para completar, car::recode también funciona, aunque me parece un poco extraño que plyr::revalue (porque la recodificación se especifica como una cadena entre comillas).

car::recode(df$column1,"''A''=''B''")


Una forma sería simplemente cambiar la etiqueta del nivel. Primero, algunos datos de prueba.

df <- data.frame(column1=c("A","B","C","A","B"))

y ahora reemplazamos "A" con "X"

levels(df$column1) <- gsub("A","X", levels(df$column1))

y podemos ver que ha cambiado

column1 1 X 2 B 3 C 4 X 5 B

Es posible que deba tener cuidado con gsub() ya que acepta una expresión regular. Un reemplazo más específico sería

gsub("^A$","X", levels(df$column1))

para coincidir exactamente con "A" y no con "CAB" u otra cosa con un capital A.