计算保留率按年份划分

时间:2019-09-06 07:05:27

标签: r database split retention churn

按年份划分计算保留率/流失率

亲爱的社区,我正在一个数据挖掘项目中,希望将先前的想法从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

1 个答案:

答案 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