Tengo data.frame que contiene varios factores y quiero cambiar el nombre de los niveles de factores para todos estos factores. Ej .:¿Cómo asignar dentro de aplicar familia?
mydf <- data.frame(col1 = as.factor(c("A","A",NA,NA)),col2 = as.factor(c("A",NA,NA,"A")))
mydf <- as.data.frame(lapply(mydf,addNA))
Tenga en cuenta que el ejemplo de la vida real tiene mucho más que sólo dos columnas. Por lo tanto me gustaría utilizar aplican para asignar otros nombres de nivel a todas estas columnas, al igual que en:
levels(mydf$col1) <- c("1","0")
He intentado lo siguiente pero no funcionó ...
apply(mydf,1,function(x) levels(x) <- c("1","0"))
No estoy realmente sorprendido de que no funciona, pero no tengo mejores ideas en este momento. ¿Debo usar with
tal vez?
EDIT: Me di cuenta de que cometí un error al simplificar demasiado las cosas. Usé addNA
para tener en cuenta el hecho de que las NA ya no deberían manejarse como NA. Por lo tanto, también quiero volver a etiquetarlos. esto no funciona con la sugerencia de Andrie y devuelve el siguiente mensaje de error:
labels = c("1", : invalid labels; length 2 should be 1 or 1
Tenga en cuenta que he actualizado mi ejemplo df.
No dice lo que quiere hacer con los niveles de NA. ¿Cambiarles el nombre a qué? – Andrie
después de usar addNA Tengo los niveles 1 y. Y me gustaría que la categoría de NA se cambie a 0, al igual que eran niveles de factor ordinarios y nunca habían sido NA. –
@Charles: ¿qué pasa con la etiqueta categórica? Esta es una pregunta seria. ¿Es porque es tan independiente del lenguaje? Usar el término R para categórico ('factor') no hubiera sido mejor. ¿Debo dejar todo el aspecto y por qué? –