【上一篇:19.关于summarise()之逐步汇总和ungrouping】
【下一篇:21.关于Exploratory Data Analysis之一】
group_by()和summarise()函数一起使用是最有用的,但跟mutate()、filter()一起用有时候也很方便。
flights_sml <- select(flights,
year:day,
ends_with("delay"),
distance,
air_time
)
# 每天的航班,按到达延误时间降序排列,选出最延误的9趟航班
> flights_sml %>%
+ group_by(year, month, day) %>%
+ filter(rank(desc(arr_delay)) < 10)
# A tibble: 3,306 x 7
# Groups: year, month, day [365]
year month day dep_delay arr_delay distance air_time
<int> <int> <int> <dbl> <dbl> <dbl> <dbl>
1 2013 1 1 853 851 184 41
2 2013 1 1 290 338 1134 213
3 2013 1 1 260 263 266 46
4 2013 1 1 157 174 213 60
5 2013 1 1 216 222 708 121
6 2013 1 1 255 250 589 115
7 2013 1 1 285 246 1085 146
8 2013 1 1 192 191 199 44
9 2013 1 1 379 456 1092 222
10 2013 1 2 224 207 550 94
# ... with 3,296 more rows
#找出以dest分组的,每组中航班数量大于365的
popular_dests <- flights %>%
group_by(dest) %>%
filter(n() > 365)
#到达延误的航班中,计算每趟航班的延误时间占总体延误时间的比例,打印年月日、目的地到达延误时间与比例
popular_dests %>%
filter(arr_delay > 0) %>%
mutate(prop_delay = arr_delay / sum(arr_delay)) %>%
select(year:day, dest, arr_delay, prop_delay)
在grouped filter和grouped mutated中使用最自然的函数叫做窗口函数(用来做summarise的叫做summary functions),用vignette("window-functions")查看窗口函数的帮助。
练习题
1.回顾有用的mutate和filter函数,看一下跟group_by()一起使用的时候如何更改。
2.那架飞机有最糟糕的准点率
3.如果你想尽可能地避免延误,你应该在一天中的什么时间坐飞机呢?
4.对于每个目的地,计算延迟总分钟数。对于每个航班,计算总延误占其目的地的比例。
5.延误通常与时间有关:即使导致最初延误的问题得到解决,较晚的航班也会被延误,以便让较早的航班离开。使用lag(),探究航班延误与前一航班延误之间的关系。
6.看看每个目的地。你能找到速度可疑的航班吗?(例如,表示潜在的数据输入错误的航班)。计算相对于到该目的地的最短航班的飞行时间。哪些航班在空中延误最严重?
7.找出所有至少由两家航空公司运营的目的地。利用这些信息对运营商进行排名。
8.对于每架飞机,计算第一次延误超过1小时之前的航班数。
【上一篇:19.关于summarise()之逐步汇总和ungrouping】
【下一篇:21.关于Exploratory Data Analysis之一】
网友评论