按年份划分计算保留率/流失率
亲爱的社区,我正在一个数据挖掘项目中,希望将先前的想法从excel转换为R。
我有一个包含合同数据的客户数据库,并想计算保留率。
我在玩这些library(lubridate)
; library(reshape2)
; library(plyr)
,但我无法弄清楚它在R中的工作原理。
我有这样的数据:
ID Customer START END
1 Tesco 01-01-2000 31-12-2000
2 Apple 05-11-2001 06-02-2002
3 H&M 01-02-2002 08-05-2002
4 Tesco 01-01-2001 31-12-2001
5 Apple 01-01-2003 31-12-2004
我现在正在考虑将数据拆分为Years(df2000,df2001),然后在主表中存在客户名称的情况下再次查找(如果是,则返回1)。
结果可能像这样:
Customer 2000 2001 2002 2003 Retention Rate
Tesco 1 1 0 0 0.5
Apple 0 1 0 1
H&M 0 0 1 0
答案 0 :(得分:0)
使用dplyr
,您可以尝试从每个year
日期获得START
的值,为每个count
和{{1} },计算保留率,然后Customer
将数据转换为宽格式。
year
编辑
要考虑使用财政年度而不是10月-9月的数据,我们可以
spread
数据
library(dplyr)
df %>%
mutate(year = format(as.Date(START, format = "%d-%m-%Y"), "%Y")) %>%
dplyr::count(Customer, year) %>%
group_by(Customer) %>%
mutate(ret = n()/n_distinct(.$year)) %>%
tidyr::spread(year, n, fill = 0)
# Customer ret `2000` `2001` `2002` `2003`
# <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Apple 0.5 0 1 0 1
#2 H&M 0.25 0 0 1 0
#3 Tesco 0.5 1 1 0 0