一、下面是最后一个核心函数summarize,可以将数据进行分组摘要。
1.简介
通常与group_by函数一起使用:
下面计算了每日平均延误时间:
> by_day<-group_by(flights,year,month,day)
> summarize(by_day,delay=mean(dep_delay,na.rm=TRUE))
# A tibble: 365 x 4
# Groups: year, month [12]
year month day delay
<int> <int> <int> <dbl>
1 2013 1 1 11.5
2 2013 1 2 13.9
3 2013 1 3 11.0
4 2013 1 4 8.95
5 2013 1 5 5.73
6 2013 1 6 7.15
7 2013 1 7 5.42
8 2013 1 8 2.55
9 2013 1 9 2.28
10 2013 1 10 2.84
# ... with 355 more rows
2.管道
假设我们想要了解每个目的地的距离和平均延误时间的关系。完成数据准备需要以下三步:
1)按照目的地对航班进行分组。
2)进行摘要统计,计算距离、平均延误时间和航班数量。
3)通过筛选除去噪声点和异常值。
我们可以使用管道完成上述一系列过程而避免对中间数据框命名。上述过程可以抽象为:分组,摘要统计,筛选。
管道的工作过程可以抽象为:x %>% f(y) %>% g(z)会转变为 g(f(x,y))
> delays<-flights %>% group_by(dest) %>% summarize(count=n(),dist=mean(distance,na.rm=TRUE),delay=mean(arr_delay,na.rm=TRUE)) %>% filter(count>20)
>head(delays)
# A tibble: 6 x 4
dest count dist delay
<chr> <int> <dbl> <dbl>
1 ABQ 254 1826 4.38
2 ACK 265 199 4.85
3 ALB 439 143 14.4
4 ATL 17215 757. 11.3
5 AUS 2439 1514. 6.02
6 AVL 275 584. 8.00
3.缺失值
除了使用每个函数的na.rm=TRUE来去掉缺失值,还可以先去除有缺失值的航班:
not_cancelled<-flights %>% filter(!is.na(dep_delay),!is.na(arr_delay))
4.计数
聚合操作中包含一个计数(n())或者非缺失值的计数(sum(!is.na()))是很好