PDF 117 / 520 Missing Values
English · PDF 117
Original PDF page 117
中文 · PDF 117
    1. 探索价格的分布。你有没有发现什么异常或令人惊讶之处?(提示:仔细考虑分箱宽度,并确保尝试一个较宽的取值范围。)
    1. 0.99 克拉的钻石有多少颗?1 克拉的钻石有多少颗?你认为造成这种差异的原因是什么?
    1. 在放大直方图时,比较并对比 coord_cartesian() 与 xlim() 或 ylim() 的异同。如果不设置 binwidth 会发生什么?如果缩放到只显示半根柱子会发生什么?

缺失值

如果你在数据集中遇到了异常值,并且只想继续进行其余的分析,你有两个选择:

  • 删除包含异常值的整行数据:

diamonds2 <- diamonds %>% filter(between(y, 3, 20))

我不推荐这种做法,因为仅仅一个测量值无效,并不意味着所有测量值都无效。此外,如果你的数据质量较低,等你对每个变量都应用了这种方法之后,可能会发现已经没有任何数据剩下了!

  • 相反,我建议用缺失值替换异常值。最简单的方法是使用 mutate() 将该变量替换为一个修改后的副本。你可以使用 ifelse() 函数将异常值替换为 NA:

diamonds2 <- diamonds %>% mutate(y = ifelse(y < 3 | y > 20, NA, y))

ifelse() 有三个参数。第一个参数 test 应该是一个逻辑向量。当 test 为 TRUE 时,结果将包含第二个参数 yes 的值;当 test 为 FALSE 时,结果将包含第三个参数 no 的值。

与 R 一样,ggplot2 也遵循这样的理念:缺失值绝不应该被悄悄地忽略。由于缺失值应该绘制在哪里并不明显,ggplot2 不会将它们包含在图中,但会发出它们已被移除的警告: