【上一篇:22.关于Exploratory Data Analysis之二】
【下一篇:24.关于Exploratory Data Analysis之四】
关于丢失值(Missing values)
如果您在您的数据集中遇到了不寻常的值,并且只是想继续进行其余的分析,那么您有两个选择。
1. 删除带有异常值的整行。不建议,一个变量无效不代表所有变量都无效,而且如果数据质量很差,也许筛选后就没数据了。
2. 取而代之的建议是用missing values代替unusual valus。最简单的方式就是用mutate的修改模式(也是是执行完表达式之后还用已知的变量名):
diamonds2 <- diamonds %>%
mutate(y = ifelse(y < 3 | y > 20, NA, y))
#ifelse函数有三个参数,ifelse(test, yes, no)
#还有一个dplyr::case_when()函数,此处再挖坑。
与R一样,ggplot2遵循的原则是,丢失的值永远不应该无声地丢失。在哪里绘制缺失的值并不明显,所以ggplot2不将它们包含在绘图中,但它会警告它们已经被删除:
ggplot(data = diamonds2, mapping = aes(x = x, y = y)) +
geom_point()
#> Warning: Removed 9 rows containing missing values (geom_point).
#用na.rm=T就不会有警告信息了
ggplot(data = diamonds2, mapping = aes(x = x, y = y)) +
geom_point(na.rm = TRUE)
另一些时候,你想了解是什么使得带有缺失值的observations与有记录值的observations不同。例如,在nycflights13::flights中,dep_time变量中缺失的值表明航班被取消了。所以你可能要比较一下取消的和未取消的时间的预定的起飞时间。可以通过使用is.na()创建一个新变量来实现。
nycflights13::flights %>%
mutate(
cancelled = is.na(dep_time),
sched_hour = sched_dep_time %/% 100,
sched_min = sched_dep_time %% 100,
sched_dep_time = sched_hour + sched_min / 60
) %>%
ggplot(mapping = aes(sched_dep_time)) +
geom_freqpoly(mapping = aes(colour = cancelled), binwidth = 1/4)
取消的航班的预计起飞时间
然而,这个图并不好,因为未取消的航班比取消的航班多得多。在下一节中,我们将探讨一些改进这种比较的技术。
练习题
1. 在直方图中缺失值会发生什么?柱状图中缺失的值会发生什么?为什么会有区别?
2. na.rm = TRUE在mean()和sum()中干了什么?
缺失值的介绍结束了,下面是关于两个变量的共同变换的介绍。
【上一篇:22.关于Exploratory Data Analysis之二】
【下一篇:24.关于Exploratory Data Analysis之四】
网友评论