计算R数据框中的流失:R中的数据计算

时间:2016-03-09 10:03:44

标签: r dplyr

您好我有一个数据框,第一列有客户名称/ ID,M0:M100列表示从加入月份收到的收入。以下小样本:

我需要为数据框计算收入流失月数(M0到M100):

客户在一个月内搅拌时说M3,他在M2中的非零值和所有未来月份的总和为0.例如M2!= 0&总和(M3:Mn)== 0。在这种情况下,M3中的流失值是我们从客户那里获得的M2收入。

customer<-c("Robin","Tim","John","Casey","Jack")
M0<-c(234,21,22,22,32)
M1<-c(33,33,232,221,322)
M2<-c(3,2,25,98,100)
M3<-c(0,2,0,98,0)
M4<-c(3,0,0,0,0)
df=data.frame(customer,M0,M1,M2,M3,M4)

Output:
       M0 M1 M2 M3 M4
Churn  0  0  0 125 100

月M3:杰克&amp;约翰流失(分别为100和25) 第M4个月:Tim&amp; Casey Churn(分别为2&amp; 98值)

罗宾仍然活跃。需要这样才能获得大量数据并陷入困境。

1 个答案:

答案 0 :(得分:0)

这可以为您提供上次活跃月份的信息:

library(reshape)
library(dplyr)
df %>% melt(id="customer") %>% group_by(customer) %>% 
mutate(month=as.numeric(substr(variable, 2,5)), maxmonth=max(month[value!=0])) %>% 
filter(month==maxmonth)

结果:

  customer variable value month maxmonth
    (fctr)   (fctr) (dbl) (dbl)    (dbl)
1     John       M2    25     2        2
2     Jack       M2   100     2        2
3      Tim       M3     2     3        3
4    Casey       M3    98     3        3
5    Robin       M4     3     4        4

当然,你可以从那里选择价值。

编辑:

如果你想看到每月流失值的总和,这样做(df2是上一步的结果):

df2 %>% mutate(month=month+1) %>% group_by(month) %>% summarise(sum=sum(value))

结果:

  month   sum
  (dbl) (dbl)
1     3   125
2     4   100
3     5     3

当然最后一行表示活跃客户的上个月的价值,因此可以跳过。