【发布时间】:2015-05-26 02:51:40
【问题描述】:
我在 R 中有一个如下所示的数据框:
cust = c("A", "B", "C", "A", "B", "E", "A", "F", "A", "G")
period = as.Date(c("2013/1/1", "2013/1/1", "2013/1/1", "2013/1/2", "2013/1/2",
"2013/1/2", "2013/1/3", "2013/1/3", "2013/1/4", "2013/1/4"))
df = data.frame(cust, period)
我想将其转换为可以输出以下格式的方式:
period NumCust_Initial GainedCust LostCust NumCust_EndUpWith
1/1/2013 3 NA NA NA
2/1/2013 3 1 1 3
3/1/2013 2 1 2 2
4/1/2013 2 1 1 2
我的想法是,我会计算每个时期的唯一身份客户。然后,我将根据上一期计算获得GainedCust 的新客户数量和失去LostCust 的客户数量。最后,我们会做一个计算得到 p>
从df 到2/1/2013 我有3 个独特的客户。我获得了 1 个(相对于 1/1/2013)但又失去了 1 个(相对于 1/1/2013),所以我最终得到了 3 个客户(从 1/1/2013 中的 NumCust_Initial 计算为 3 加上新客户的数量 @987654331 @ in 2/1/2013 减去流失客户的数量 LostCust in 2/1/2013)。
同样,我们可以从df 看到,在3/1/2013 我们开始时有 2 个客户。然后我们获得了 1 个新客户(相对于 2/1/2013)并失去了 2 个客户(相对于 2/1/2013)。等等等等。
如何在 R 中执行所有这些转换/计算?我已经尝试查看dplyr 和reshape2 中的一些功能,但目前还无法实现。以前有人在 R 中遇到过类似的数据转换挑战吗?如何在 R 中实现预期的结果?
【问题讨论】:
-
您的 gaincust 和 lost cust 列对我来说没有意义。第 1 天有 3 个客户,第 2 天有 3 个客户。您将如何获得客户为 1 而失去客户也是 1?
-
抱歉,让我尝试澄清一下:
GainedCust列本质上是出现在第 2 天但不在第 1 天出现的客户的唯一计数。同样,LostCust是唯一客户的数量出现在第 1 天但未出现在第 2 天的客户。在数据框中df我试图突出显示这一点。谢谢。