studio - superponer graficas en r
Convertir NA en un nivel de factor (3)
Establezca el argumento de exclusión en NULL para incluir NA como niveles (y use factor en lugar de as.factor. Hace lo mismo y tiene más argumentos para establecer):
a = factor(as.character(c(1, 1, 2, 2, 3, NA)), exclude = NULL)
> a
[1] 1 1 2 2 3 <NA>
Levels: 1 2 3 <NA>
Tengo un vector con valores de NA que me gustaría reemplazar por un nuevo nivel de factor NA .
a = as.factor(as.character(c(1, 1, 2, 2, 3, NA)))
a
[1] 1 1 2 2 3 <NA>
Levels: 1 2 3
Esto funciona, pero parece una forma extraña de hacerlo.
a = as.factor(ifelse(is.na(a), "NA", a))
class(a)
[1] "factor"
Este es el resultado esperado:
a
[1] 1 1 2 2 3 NA
Levels: 1 2 3 NA
Puede agregar el NA como nivel y cambiar el nombre del nivel a algo más explícito que <NA> usando fct_explicit_na de fct_explicit_na del paquete.
library(forcats)
Por defecto, obtienes el nuevo nivel como (Missing) :
fct_explicit_na(a)
[1] 1 1 2 2 3 (Missing)
Levels: 1 2 3 (Missing)
Puedes configurarlo para otra cosa:
fct_explicit_na(a, "unknown")
[1] 1 1 2 2 3 unknown
Levels: 1 2 3 unknown
También puedes usar addNA() .
x <- c(1, 1, 2, 2, 3, NA)
addNA(x)
# [1] 1 1 2 2 3 <NA>
# Levels: 1 2 3 <NA>
Esta es básicamente una función de conveniencia para factorizar con exclude = NULL . De la help(factor) -
addNAmodifica un factor al convertirNAen un nivel adicional (de modo que los valores deNAse cuentan en tablas, por ejemplo).
Entonces, otra razón por la que esto es bueno es porque si ya tienes un factor f , puedes usar addNA() para agregar rápidamente NA como un nivel de factor sin cambiar f . Como se menciona en la documentación, esto es útil para las tablas. También se lee muy bien.