如何计算分组的滚动斜率

时间:2019-07-07 15:15:53

标签: r

我有以下几列的数据框:客户,月份,有效/无效,总销售额($)。有效/无效-如果特定月份的销售额> 0,则为1,否则为0。我想根据每个客户的活跃程度来为其计算滚动斜率。例如,如果他在1月至3月期间处于活动状态,然后在4月处于非活动状态,然后在5月至12月又处于活动状态,那么直到3月的每一行都将显示其当月销售的滚动斜率,然后在4月为0,然后是新的滚动坡度表明他在5月-12月的活动(忽略之前发生的事情)。

我知道它可能涉及rollapply()或ave(),但仅此而已。预先感谢!

以下示例具有预期结果

structure(list(X = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 

1L,1L,1L,1L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L,2L ).Label = c(“ Alex”,“ Michael”),class =“ factor”),Month = structure(c(5L, 4L,8L,1L,9L,7L,6L,2L,12L,11L,10L,3L,5L,4L,8L,1L, 9L,7L,6L,2L,12L,11L,10L,3L),. Label = c(“ Apr-18”,“ Aug-18”, “ Dec-18”,“ Feb-18”,“ Jan-18”,“ Jul-18”,“ Jun-18”,“ Mar-18”,“ May-18”, “ Nov-18”,“ Oct-18”,“ Sep-18”),类=“ factor”),Activity = c(1L, 1L,1L,0L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,0L,0L,1L, 1L,1L,0L,0L,1L,1L,1L),销售... = c(12L,71L,83L,0L, 77L,22L,32L,69L,81L,98L,84L,73L,24L,85L,0L,0L,89L, 53L,66L,0L,0L,35L,67L,13L),Expected_Rolling_Slope = c(0, 1.9、1.22、0、0,-1.77,-0.74,-0.05、0.18、0.3、0.26、0.19, 0.19,0.11,0,0,0,-1.16,-0.38,0,0,0,1.03,-0.35)),类=“ data.frame”,row.names = c(NA, -24L))

0 个答案:

没有答案