数据整理—dplyr包(summarise系列)

640?wx_fmt=png

作者:小橙子

来源:小橙子学数据分析

函数背景   

     今天讲解的函数是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"关系


——————————————

往期精彩:

640?wx_fmt=png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值