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)
-
addNA
modifica un factor al convertirNA
en un nivel adicional (de modo que los valores deNA
se 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.