Подтвердить что ты не робот

NA строятся в boxplot ggplot2

Я пытаюсь построить v. простой boxplot в ggplot2. У меня есть богатство видов и класс землепользования. Однако у меня есть 2 NA в моих данных. По какой-то странной причине их замышляют, даже когда они понимаются как NA Р. Любое предложение об их устранении?

Используемый мной код:

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))

Однако граф включает в себя 2 NA для luse. К сожалению, я не могу отправлять изображения, но представьте, что на мой график добавляется панель NA.

4b9b3361

Ответ 1

Вы можете попытаться использовать функцию subset() в первой строке вашего кода

ggplot(data=subset(data, !is.na(luse)), aes(x=luse, y=rich))+

как предложено в: Устранение NA из ggplot

Ответ 2

Вы также можете использовать функцию filter() в dplyr/tidyverse:

data %>% filter(is.na(luse) == FALSE) %>% 
   ggplot(aes(x=luse, y=rich)) +
   geom_boxplot()

Таким образом, вам не нужно создавать новый объект.

Ответ 3

Вот формальный ответ, использующий комментарии выше для включения !is.na() с filter() из tidyverse/dplyr. Если у вас есть базовая операция обратного хода, такая как фильтрация NA, вы можете сделать это прямо в вызове ggplot, как предлагается, чтобы избежать создания нового фрейма данных:

ggplot(data %>% filter(!is.na(luse)), aes(x = luse, y = rich)) + geom_boxplot()