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

巧用R语言中常见的各类偏移窗口函数

作者头像
1480
发布2019-05-21 23:17:54
6.4K0
发布2019-05-21 23:17:54
举报
文章被收录于专栏:数据分析1480数据分析1480

前言

已经介绍了R语言中的排名窗口函数,本节介绍一下R语言中的偏移窗口函数,如果使用纯R语言语句实现“偏移”效果,很是复杂,可以说偏移窗口函数是处理“偏移”数据问题的利器。

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

窗口函数:计算环比和同比

窗口函数:制作vintage报表

函数对比

风格依旧,与sql中偏移窗口函数对比来介绍R语言中的偏移窗口函数,若熟悉sql中的偏移窗口函数,会发现R语言中的偏移窗口函数可以说是“粘贴复制”sql中的窗口函数。R语言中有5个偏移窗口函数: lead()、lag()、first()、last()和nth()函数。

函数使用

数据仍使用之前的数据:

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 lead函数

R语言中的lead函数与sql中的lead函数相同,lead(column,n)获取当前数据行按照某种排序规则的下第n行数据的某个字段:例如,计算每位客户购买时间之间的时间间隔,故先在当前购买时间后面添加下次购买时间:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(lead_date = lead(buy_date, 1, order_by = buy_date)) %>%  arrange(user_no, buy_date)

然后添加一个新的字段:两个时间相减

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(lead_date = lead(buy_date, 1, order_by = buy_date)) %>%  arrange(user_no, buy_date) %>%  mutate(diff_time = difftime(lead_date, buy_date, units = "days"))

例如计算每个客户消费金额的环比变化:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(lead_amt = lead(amt, 1, order_by = buy_date)) %>%  arrange(user_no, buy_date) %>%  mutate(huanbi = (lead_amt - amt)/amt)

2 lag函数

R语言中的lag函数与sql中的lag函数相同,lag(column,n)获取当前数据行按照某种排序规则的上n行数据的某个字段,lag函数与lead函数可以等价替换。例如:获取每位客户当前购买时间的上一次时间:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(lag_date = lag(buy_date, 1, order_by = buy_date)) %>%  arrange(user_no, buy_date)

3 frist函数

R语言中的frist函数与sql中的first_value函数相同,first函数按照某种方式排序下取最早的某一个字段的值,例如取每位客户第一次购买时间:

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

4 last函数

R语言中的last函数与sql中的last_value函数相同,last函数按照某种方式排序下取最近(晚)的某一个字段的值,例如取每位客户最近一次购买时间:

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

5 nth函数

R语言中的nth函数与sql中的nth_value函数相同,nth函数介于first函数和last函数,first函数是取某个字段的最早记录,last函数取某个字段的最晚记录,而nth是取某个字段的第n个记录:例如取每位客户的第二次购买时间:

代码语言:javascript
复制
data1 %>%  group_by(user_no) %>%  mutate(nth_date = nth(buy_date,2,order_by = buy_date)) %>%  arrange(user_no, buy_date)

总结

本文介绍了R语言中的偏移窗口函数,在处理“错位“数据的时候可以使用偏移窗口函数,例如计算同比、环比、第一次消费时间、最近一次消费时间、每次消费时间间隔等。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档