NA de sont tracées dans une boîte à moustaches ggplot2
Je suis en train de tracer une v. simple boîte à moustaches dans ggplot2. J'ai de la richesse en espèces contre l'utilisation des sols de classe. Cependant, j'ai 2 NA dans mes données. Pour une raison étrange, ils sont tracées, même quand ils sont étant entendu que NA par R. Toute suggestion tendant à supprimer?
Le code que j'utilise est:
ggplot(data, aes(x=luse, y=rich))+
geom_boxplot(mapping = NULL, data = NULL, stat = "boxplot", position = "dodge", outlier.colour = "red", outlier.shape = 16, outlier.size = 2, notch = F, notchwidth = 0.5)+
scale_x_discrete("luse", drop=T)+
geom_smooth(method="loess",aes(group=1))
Toutefois, le graphique comprend 2 NA pour lutilisez. Malheureusement, je ne peut pas poster des images, mais imaginez qu'un NA bar est ajoutée à mon graphe.
ggplot(na.omit(data), aes(x=luse, y=rich)) + ...
Merci beaucoup pour cette!
Pour un cas plus général: si les données contiennent des variables autres que les deux se tramait,
na.omit(data)
va supprimer les observations avec missings sur n'importe quelle variable. Cela peut avoir des conséquences inattendues pour vos graphiques et/ou d'analyse. On pourrait utiliser data=na.omit(data[,c("var1","var2",...)])
, où var1, var2, ... sont les variables dont vous avez besoin pour votre graphique.+1 pour @Maxime.K, j'ai rencontré ce problème exact avec un grand bloc de données dans laquelle l'une des variables a une proportion extrêmement élevée de NA valeurs. Je ne pouvais pas tout à fait la séance d'entraînement de la syntaxe simplement se débarrasser de la NA dans ma variable d'intérêt. Mais attention, si vous êtes uniquement intéressé par une variable, comme je l'étais, le code ci-dessus renvoie un vecteur, vous devez sélectionner au moins 2 colonnes dans les données.cadre pour le faire fonctionner comme il est écrit.
OriginalL'auteur R. Solar | 2013-06-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer d'utiliser l'
subset()
fonction dans la première ligne de votre codecomme le suggère: L'élimination de NAs à partir d'un ggplot
OriginalL'auteur בנימן הגלילי
Vous pouvez également utiliser le
filter()
fonction dans dplyr/tidyverse:De cette façon, vous n'avez pas à créer un nouvel objet.
! is.na()
à la place ? Ou voulez-vous tous les NA? 😉 Aussi, vous n'avez pas nécessairement besoin de spécifieris.na (x) == TRUE
, car il correspond à une logique de vecteur de toute façon, qui seront ensuite utilisées par lesfilter()
.... P. S. bienvenue à SOFOh, oui. Faute de frappe, désolé. Merci pour la capture. Aussi, c'est cool. Je ne sais pas qui pourrait les jeter
is.na()
directement.OriginalL'auteur Luke McDonald