R for data Science(五)
2018-09-08 本文已影响7人
一路向前_莫问前程_前程似锦
summarise
这周介绍最后一个动词 summarise
该函数并没有什么实质性功能,我的理解就是相当于apply类的函数,对数据集进行包装函数处理,即数据集的函数放在summarise里面。要想体现出该函数的优势,要和group_by函数联合使用
group_by函数:是对数据集进行分组处理
by_day <- group_by(flights, year, month, day)表示先按照年,再按照月,最后按照日来排序
summarise(by_day, delay = mean(dep_delay, na.rm = TRUE))
就得到下面结果
管道工具 %>%
%>% R里面表示数据的传递
例如:
by_dest <- group_by(flights, dest)
delay <- summarise(by_dest, count = n(), dist = mean(distance, na.rm = TRUE), delay = mean(arr_delay, na.rm = TRUE))
delay <- filter(delay, count > 20, dest != "HNL")
如果我们使用管道工具,就是下面这样
delays <- flights %>%
group_by(dest) %>%
summarise( count = n(), dist = mean(distance, na.rm = TRUE), delay = mean(arr_delay, na.rm = TRUE) ) %>%
filter(count > 20, dest != "HNL")最初的数据源是flights ,则就开始从数据源开始进行向下延伸
挑出不含缺失值的小技巧
!is.na()
例如挑选 dep_delay这一列不含缺失值
not_cancelled <- flights %>% filter(!is.na(dep_delay))
挑出两列不含缺失值的列
not_cancelled <- flights %>% filter(!is.na(dep_delay), !is.na(arr_delay))
管道操作符,来画图
delays <- not_cancelled %>%
group_by(tailnum) %>%
summarise( delay = mean(arr_delay) )
ggplot(data = delays, mapping = aes(x = delay)) + geom_freqpoly(binwidth = 10)
delays <- not_cancelled %>%
group_by(tailnum) %>%
summarise( delay = mean(arr_delay) )%>%
ggplot(mapping = aes(x = delay)) + geom_freqpoly(binwidth = 10)
image
summarize里面还有一些常见的函数
median(x) 中位数
min(x) 最值
quantile(x, 0.25) 下四分位数
max(x) 最值
sd(x), 方差
IQR(x) 四分位差
mad(x) 平均绝对离差
总结
至此,dplyr包的函数,我们今天就讲解完毕,下面我们总结一下几大函数
filter 是对行的筛选
select 是对列的筛选
mutate 是产生新的变量
arrange 是排序 (desc 表倒序)
summarise 是函数总结 里面内置了像mean等常见的函数