啊啊啊啊啊吖

2018-11-03   阅读量: 725

数据分析师 统计学 R语言

使用管道组合多种操作

扫码加入数据分析学习群

假设我们想要研究每个目的地的距离和平均延误时间之间的关系。使用已经了解的 dplyr

包功能,你可能会写出以下代码:

by_dest <- group_by(flights, dest)
delay <- summarize(by_dest,
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE)
)
delay <- filter(delay, count > 20, dest != "HNL")

# 750英里内,平均延误时间会随着距离的增加而增加,接着会随着距离的增加而减少。随着飞

行距离的增加,延误时间有可能会在飞行中弥补回来吗?

ggplot(data = delay, mapping = aes(x = dist, y = delay)) +
geom_point(aes(size = count), alpha = 1/3) +
geom_smooth(se = FALSE)

完成数据准备需要 3 步。

(1) 按照目的地对航班进行分组。

(2) 进行摘要统计,计算距离、平均延误时间和航班数量。

(3) 通过筛选除去噪声点和火奴鲁鲁机场,因为到达该机场的距离几乎是到离它最近机场的

距离的 2 倍。

这段代码写起来有点令人泄气,因为不得不对每个中间数据框命名,尽管我们根本不关心

这一点。命名是很难的,这样做会影响我们的分析速度。

解决这个问题的另一种方法是使用管道, %>%:

delays <- flights %>%
group_by(dest) %>%
summarize(
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE)
) %>%
filter(count > 20, dest != "HNL")

这种方法的重点在于转换的过程,而不是转换的对象,这使得代码具有更好的可读性。你

可以将其读作一串命令式语句:分组,然后摘要统计,然后进行筛选。在阅读代码时, %>%

最好读作“然后”。

使用这种方法时, x %>% f(y) 会转换为 f(x, y), x %>% f(y) %>% g(z) 会转换为 g(f(x,

y), z),以此类推。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 3 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子