前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用R语言中各类聚合窗口函数

巧用R语言中各类聚合窗口函数

作者头像
1480
发布2019-05-22 22:59:43
2.3K0
发布2019-05-22 22:59:43
举报
文章被收录于专栏:数据分析1480

前言

这部分介绍一下R语言中的聚合窗口函数,R语言中的聚合窗口函数与sql中的窗口函数有点差异,R语言中的相同记录的累计求和累计平均不再相同。

【窗口函数】第三弹:聚合函数和分布函数

【R语言】窗口函数系列一:排名窗口函数

【R语言】窗口函数系列二:偏移窗口函数

函数对比

仍是与sql对比介绍R语言中的聚合窗口函数,sql中的聚合窗口函数,既能实现普通聚合,也能实现加强版的累积聚合,R语言中也有与之一一对应的聚合函数:

函数使用

使用之前数据:

user_no

order_no

buy_date

amt

u01

dadeca

2019/1/1

100

u02

xaefaw

2018/6/5

100

u01

daecaw

2019/2/1

200

u02

sdawfa

2018/2/1

150

u01

cwewca

2019/3/1

200

u01

wcawca

2018/7/1

120

u02

wdcbhf

2019/3/1

500

u02

qweace

2019/1/1

300

u01

ceasxa

2018/12/1

300

u01

xasaec

2019/2/1

150

1 sum、cumsum函数

R语言中的sum和cumsum聚合函数与sql中的sum聚合函数相同,对分组求和和累计求和。R语言中的聚合函数是在sql基础上的改进,R语言中相同记录累计求和值不再相同。下面举例说明一下,计算每位客户消费总额以及按照购买时间的顺序累计消费总额:

消费总额:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(sum_amt = sum(amt)) %>%  arrange(user_no, buy_date)

累计消费总额:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(cumamt = order_by(buy_date, cumsum(amt))) %>%  arrange(user_no, buy_date)

R语言中的累计计算函数,当order_by的字段记录相同时候,累计值不再相同,而sql中当记录相同的时候,累计值是相同的【窗口函数】第三弹:聚合函数和分布函数,觉得这一点是很好的优化。下图是sql中的结果:

2 min、cummin函数

R语言中的min、cummin函数与sql中的min函数相同,计算组内最小值和累计最小值:

每位客户的历史上最小消费金额:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(min_amt = min(amt)) %>%  arrange(user_no, buy_date)

按照购买时间计算每位客户的累计最小消费金额:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(cuminamt = order_by(buy_date, cummin(amt))) %>%  arrange(user_no, buy_date)

3 max、cummax函数

R语言中的max函数和cummax函数与sql中的max函数相同,计算每组内最晚(大)或者累计最晚(大)的记录:

历史上每位客户的最大消费金额:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(max_amt = max(amt)) %>%  arrange(user_no, buy_date)

按照购买时间计算每位客户的累计最大消费金额:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(cumaxamt = order_by(buy_date, cummax(amt))) %>%  arrange(user_no, buy_date)

4 mean、cummean函数

R语言中的mean函数和cummean函数与sql中的avg函数相同,计算组内平均值和组内累计平均值,与sql区别的是:R语言中相同记录的累计值不同,而sql中相同记录累计值相同:【窗口函数】第三弹:聚合函数和分布函数

历史上每位客户的平均消费金额

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(mean_amt = mean(amt)) %>%  arrange(user_no, buy_date)

按照购买时间计算每位客户的累计平均值

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(cumeanamt = order_by(buy_date, cummean(amt))) %>%  arrange(user_no, buy_date)

5 n函数

R语言中的n函数与sql中的count函数相同,计算每组内记录总数:

历史上每位客户的消费次数

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(cnt = n()) %>%  arrange(user_no, buy_date)

总结

本节介绍了R语言中的聚合窗口函数,当累计求和和累计平均的时候,与sql中结果有点差异:sql中相同记录的累计值相同,而R语言中的累计值不在相同。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据分析1480 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档