【发布时间】:2020-05-19 14:38:44
【问题描述】:
我正在尝试使用包含 390k 行的大型数据集来计算月度客户保留率的方法。基本上,我想知道一个月内出现在上个月的客户的百分比。
因此,如果上个月,客户 a、b 和 c 购买了产品。本月,客户 b、c 和 d 进行了购买。上个月的三位客户中有两位在本月进行了购买。请注意,d 上个月没有购买,因此本月不考虑,但下个月会考虑。
我在下面有一个简单但有代表性的数据框。
year_mon = c("2018 Nov", "2018 Nov", "2018 Nov", "2018 Nov", "2018 Nov", "2018 Dec", "2018 Dec", "2018 Dec", "2019 Jan", "2019 Jan", "2019 Feb", "2019 Feb", "2019 Feb")
customer_id = c(1, 2, 3, 4, 5, 2, 3, 4, 3, 4, 1, 2, 3)
data.frame(customer_id, year_mon)
无论我有多少个月,我如何计算 CRR?也就是说,我不想要这种硬编码。如果我有连续 30 个月的数据或连续 3 个月的数据,我想要一个计算 CRR 的解决方案。
来自https://www.bitrix24.com/glossary/what-is-customer-retention-rate-definition.php:
客户保留率 = ((EC-NC)/SC)*100,其中:
- EC - 一段时期结束时的客户数量
- NC - 在此期间的新客户数量
- SC - 期间开始时的客户数量
假设您发布了一款手机游戏。 9 月 1 日,你有 1000 名玩家。到 9 月 30 日,您有 500 名新玩家,但有 200 名玩家停止玩游戏。因此,在一个时期结束时(在我们的例子中是一个月),您有 1300 名游戏客户。我们来计算留存率:
((1300-500)/1000)*100=80
因此,您设法留住了 80% 的客户。每个行业都有自己的“好”和“坏”保留率。不用说,每家公司都试图保留最大比例的客户。
编辑 @r2evans 这里你提供的解决方案似乎在这两年的一月都有“重置”,这很奇怪。我证实在 12 月也有客户在 1 月出现,因此 CRR 不应该为零。我想知道是否有任何解释可以解释这一点。
【问题讨论】:
-
你的日期真的是这样格式化的吗?它们既不是一致的(
"%b %Y"和"%Y %b")也不是可排序的("2018 Dec"before"2018 Nov")。您没有将该列设为Date类是有原因的吗? -
您的代表性数据框是否应该具有不同的日期格式?
2018 Dec&Dec 2018 -
什么是客户保留率?
-
@r2evans 我更正了日期格式。
-
我明白了。但这似乎是一个与编程无关的问题,因为这是您编写代码之前的一步。因此,我无法为您提供正确的解决方案。我能做的最多就是给你一个近似值(即我会怎么做)。
标签: r