作者:小橙子
来源:小橙子学数据分析
函数背景
今天讲解的函数是summarise,可以对数据集实现"归纳"、"总结"
类似SQL中的聚合功能
比如相亲的时候,介绍人(媒婆)在介绍对象的时候,往往会介绍对象"年薪"、"身高&体重"、"嗜好"等等,其实这也是一种归纳总结。
summarise则偏向于数据集中的信息,比如最大值、最小值、均值、中位数等等
函数应用
summarise用法:summarise(.data, ...)
summarise往往对分组数据使用,对每个分组数据进行归纳。
比如iris中,对各类花的Sepal.Length,求均值
iris %>%
group_by(Species)%>%
summarise(mean(Sepal.Length))
Species `mean(Sepal.Length)`
1 setosa 5.01
2 versicolor 5.94
3 virginica 6.59
summarise主要支持以下几种公式 :
mean()、 median()
sd()、 IQR()、 mad()
min()、 max()、 quantile()
first()、 last()、 nth()
n()、 n_distinct()
any()、 all()
以first()、 last()、 nth()举例
# 获取mtcars中,各个cyl的第1个disp、最后1个gear、第2个carb
mtcars %>%
group_by(cyl) %>%
summarise(first = first(disp), last = last(gear),nth = nth(carb,2))
cyl first last nth
1 4 108 4 2
2 6 160 5 4
3 8 360 5 4
针对summarise,还有3个相关的函数:
分别是summarise_all、summarise_at、summarise_if
summarise_all,则会对数据集中的所有变量进行fun(函数)求解
summarise_all(iris[,-3:-5],c("mean","min"), na.rm = TRUE)
#获取第3~5行以外,所有列的均值和最小值
Sepal.Length_mean Sepal.Width_mean Sepal.Length_min Sepal.Width_min
1 5.843333 3.057333 4.3 2
summarise_all(iris[,-3:-5],funs(Q3 = quantile,med = median), probs = 0.75)
#获取第3~5行以外,所有列的中位数和3/4分位数
Sepal.Length_Q3 Sepal.Width_Q3 Sepal.Length_med Sepal.Width_med
1 6.4 3.3 5.8 3
summarise_at,则和“select”相似(具体查看公众号第2篇),可以通过"at"到具体的变量
iris %>% summarise_at(vars("Sepal.Length":"Petal.Length"), mean, na.rm = TRUE)
iris %>% summarise_at(vars(matches("Length")), mean, na.rm = TRUE)
iris %>% summarise_at(vars(ends_with("Length")), mean, na.rm = TRUE)
iris %>% summarise_at(vars(starts_with("Sepal")), mean, na.rm = TRUE)
iris %>% summarise_at(vars(contains("Sepal")), mean, na.rm = TRUE)
iris %>% summarise_at(vars(one_of("Sepal.Length","Sepal.Width","Sepal.Width2")), mean, na.rm = TRUE)
summarise_if,当变量类型满足的时候,进行summarise总结
iris %>% summarise_if(is.numeric, mean, na.rm = TRUE)
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.843333 3.057333 3.758 1.199333
summarise总结
"summarise"接近于SQL中的聚合函数,比SQL中的功能更加多
下一篇将讲解SQL中的 "join"关系
——————————————
往期精彩: