studio - ggplot2 tutorial español
Eliminando las NA de un ggplot (6)
Además, agregar na.rm = TRUE a tu geom_bar () funcionará.
ggplot(data = MyData,aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin", na.rm = TRUE)
Me encontré con este problema con un bucle en una serie de tiempo y esto lo solucionó. Los datos faltantes se eliminan y los resultados no se verán afectados.
Esta es una pregunta muy básica ya que estoy empezando a usar R, pero estoy tratando de crear una gráfica de barras de conteos de factores en ggplot2 y, al hacer la gráfica, obtengo 14 pequeños blips de colores que representan mis niveles reales y luego una barra gris masiva en el el final representa los 5000-ish NA en la muestra (son datos de encuestas de una pregunta que solo se aplican a aproximadamente el 5% de la muestra). He intentado el siguiente código en vano:
ggplot(data = MyData,aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin")
La adición del argumento na.rm aquí no tiene ningún efecto aparente.
mientras tanto
ggplot(data = na.omit(MyData),aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin")
me da
"Error: la estética debe tener la longitud uno o la misma longitud que los datos"
al igual que la colocación de na.omit()
en the_variable, o tanto MyData como the_variable.
Todo lo que quiero hacer es eliminar la barra de NA gigante de mi gráfico, ¿puede alguien ayudarme a hacer esto?
Desde mi punto de vista, este error "Error: la estética debe ser la longitud uno, o la misma longitud que los datos" se refiere al argumento aes (x, y) Probé el na.omit () y funcioné bien para mí.
Intente remove_missing
en remove_missing
lugar con vars = the_variable
. Es muy importante que establezca el argumento vars
, de lo contrario, remove_missing
eliminará todas las filas que contengan un NA
en cualquier columna. La configuración de na.rm = TRUE
suprimirá el mensaje de advertencia.
ggplot(data = remove_missing(MyData, na.rm = TRUE, vars = the_variable),aes(x= the_variable, fill=the_variable, na.rm = TRUE)) +
geom_bar(stat="bin")
No estoy seguro si has resuelto el problema. Para este problema, puede utilizar la función "filtro" en el paquete dplyr. La idea es filtrar las observaciones / filas cuyos valores de la variable de su interés no sea NA. A continuación, realice la gráfica con estas observaciones filtradas. Puede encontrar mis códigos a continuación y tenga en cuenta que todo el nombre del marco de datos y la variable se copian del mensaje de su pregunta. Además, supongo que conoces a los operadores de tuberías.
library(tidyverse)
MyDate %>%
filter(!is.na(the_variable)) %>%
ggplot(aes(x= the_variable, fill=the_variable)) +
geom_bar(stat="bin")
Debería poder eliminar las NA molestas en su parcela. Espero que esto funcione :)
Puede utilizar el subset
funciones dentro de ggplot2
. Prueba esto
library(ggplot2)
data("iris")
iris$Sepal.Length[5:10] <- NA # create some NAs for this example
ggplot(data=subset(iris, !is.na(Sepal.Length)), aes(x=Sepal.Length)) +
geom_bar(stat="bin")
Solo una actualización a la respuesta de @ rafa.pereira. Dado que ggplot2
es parte de tidyverse
, tiene sentido usar las funciones de tidyverse convenientes para deshacerse de los NA.
library(tidyverse)
airquality %>%
drop_na(Ozone) %>%
ggplot(aes(x = Ozone))+
geom_bar(stat="bin")
Tenga en cuenta que también puede usar drop_na()
sin especificación de columnas; entonces se eliminarán todas las filas con NA en cualquier columna.