R summarize()分组摘要

编程入门 行业动态 更新时间:2024-10-09 16:25:51

R summarize()分组<a href=https://www.elefans.com/category/jswz/34/1767599.html style=摘要"/>

R summarize()分组摘要

summarize()分组摘要分组平均值最大最小值计数

library(nycflights13)
library(tidyverse)

summarize()可以将数据折叠成一行
如果不与group_by()一起使用,那么summarize()也没什么用

summarize(flights, delay = mean(dep_delay, na.rm = TRUE))
delay
12.63907

group_by()可以将分析数据集改为单个分组

by_day <- group_by(flights,year,month,day)
summarize(by_day,delay=mean(dep_delay,na.rm=TRUE))

通过summarize可以起到mutate的作用

by_dest <- group_by(flights,dest)
delay <- summarize(by_dest,count = n(),dist = mean(distance, na.rm = TRUE),delay = mean(arr_delay, na.rm = TRUE))
ggplot(data=delay,mapping=aes(x=dist,y=delay))+geom_point(aes(size=count),alpha=1/3)+geom_smooth(se=FALSE)

常用的摘要统计量

分组求和、求平均值、计数等等。

思路是group_by统计量,summarize(count = n())

#先选出没有取消的航班
not_cancelled <- flights %>% filter(!is.na(dep_delay),!is.na(arr_delay))
#平均延误时间
not_cancelled %>% group_by(year,month,day) %>% summarize(mean=mean(dep_delay))

摘要函数名称
位置度量mean() median()
分散程度度量sd() IQR() mad()
秩的度量min() quantile() max()
定位度量first() nth() last()
计数n()
#位置度量
not_cancelled %>% group_by(year,month,day) %>% summarize(#平均延误时间avg_delay1=mean(arr_delay),#平均延误纠正时间 (只选择大于0avg_delay2=mean(arr_delay[arr_delay>0]))
yearmonthdayavg_delay1avg_delay2
20131112.651022932.48156
20131212.692887932.02991
2013135.733333327.66087
201314-1.932819428.30976
201315-1.525802022.55882
2013164.236429424.37270
201317-4.947311827.76132
201318-3.227578520.78909
201319-0.264277725.63415
2013110-5.898815927.34545
#分散程度度量
not_cancelled %>% group_by(dest) %>% summarize(distace_sd=sd(distance)) %>% arrange(desc(distace_sd))
destdistace_sd
EGE10.542765
SAN10.350094
SFO10.216017
HNL10.004197
SEA9.977993
LAS9.907786
PDX9.873299
PHX9.862546
LAX9.657195
IND9.458066
CVG9.018212
SAT9.005084
#秩的度量min(x),quantile(x,0.25),max(x)
#每天最早和最晚出发的航班
not_cancelled %>% group_by(year,month,day) %>% summarize(first=min(dep_time),last=max(dep_time))
yearmonthdayfirstlast
2013115172356
201312422354
201313322349
201314252358
201315142357
201316162355
201317492359
2013184542351
20131922252
201311032320
#计数(唯一值数量 n_distinct())
#哪个目的地有最多的航空公司
not_cancelled %>% group_by(dest) %>% summarize(carriers=n_distinct(carrier)) %>% arrange(desc(carriers))
destcarriers
ATL7
BOS7
CLT7
ORD7
TPA7
AUS6
DCA6
#只需要计数的情况
# 无需摘要统计
not_cancelled %>% count(dest)
#逻辑值计数和比例
#多少航班是在5点前出发的
not_cancelled %>% group_by(year,month,day) %>% summarize(n_early=sum(dep_time<500))
#或者写为
not_cancelled %>% group_by(year,month,day) %>% summarize(early= dep_time[dep_time<500]) %>% summarize(n=n())

注意区分上面的

#位置度量
not_cancelled %>% group_by(year,month,day) %>% summarize(#平均延误时间avg_delay1=mean(arr_delay),#平均延误纠正时间 (只选择大于0avg_delay2=mean(arr_delay[arr_delay>0]))#航班延误1小时的比例
#因为arr_delay>60是返回的一堆逻辑值110001求mean是比例
not_cancelled %>% group_by(year,month,day) %>% summarize(hour_prec=mean(arr_delay>60))
  • sum(dep_time<500): 这个是求dep_time小于500的个数,因为dep_time<500会先生成0,1的布尔列,求和就是1的数量

  • dep_time[dep_time<500] %>% summarize(n=n()):和上面一样,相当于先摘要出dep_time<500的,再计数

  • mean(arr_dalay): 对所有的arr_dalay求平均

  • mean(arr_delay[arr_delay>0]):只求arr_delay大于0的平均值

  • mean(add_delay>60),求的是arr_delay大于60的比例

  • dep_time[dep_time<500] %>% summarize(n=n()):和上面一样,相当于先摘要出dep_time<500的,再计数

  • mean(arr_dalay): 对所有的arr_dalay求平均

  • mean(arr_delay[arr_delay>0]):只求arr_delay大于0的平均值

  • mean(add_delay>60),求的是arr_delay大于60的比例

  • mean(add_delay[arr_delay>60]): 只求arr_delay大于60的平均值

更多推荐

R summarize()分组摘要

本文发布于:2024-03-23 22:50:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1743770.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:摘要   summarize

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!