在因子变量中缺少值的问题

时间:2020-05-10 00:24:01

标签: r density-plot

我有将近3,000只收割动物的数据集,我正在尝试按性别对长度和体重进行一些密度图绘制。 SEX变量是一个因子变量。问题在于,其中一些动物缺少性别决定,我遇到了各种各样的问题,似乎大多数问题都与这些缺失的价值观有关。

我的数据框称为CATCH,读取数据后,我将SEX变量归类为因数:

catch$SEX <- as.factor(as.character(catch$SEX))

为所有数据绘制基本密度图效果很好

ggplot(catch, aes(x = LENGTH)) +
  geom_density(color="black",fill="lightblue")

但是我得到警告,“我删除了包含非限定值(stat_density)的23行”,我认为这是缺少的值。

进行按性别分组的类似情节

ggplot(catch, aes(x = LENGTH,y=..count..,fill=SEX)) +
  geom_density() +
  scale_color_manual(values = c("#868686FF", "#EFC000FF","#f6f6f6f6")) +
  scale_fill_manual(values = c("#868686FF", "#EFC000FF","#E6E6E6E6"))

我得到完全相同的警告,但是NA并未被忽略。对于NA,有一个单独的图,因此它们是图例的一部分:

enter image description here

如何正确声明因子变量SEX的缺失值,以及如何从分析中忽略它们?

1 个答案:

答案 0 :(得分:1)

在使用NAs软件包进行绘图之前,您可以尝试过滤tidyverse

library(tidyverse)
catch %>%
   filter(!is.na(SEX)) %>%
   ggplot(aes(x = LENGTH,y=..count..,fill=SEX)) +
     geom_density() +
     scale_color_manual(values = c("#868686FF", "#EFC000FF","#f6f6f6f6")) +
     scale_fill_manual(values = c("#868686FF", "#EFC000FF","#E6E6E6E6"))