R中变时间序列的应用公式

R中变时间序列的应用公式,r,date,time-series,analytics,subset,R,Date,Time Series,Analytics,Subset,我在R中有一个数据帧,必须为其运行保留报告。我需要运行df销售月年序列/子集的保留公式 Sale_date, Cancel_date, days_to_cancel, sale_month; 2015-01-01, 2015-04-06, 95, 2015-01; 2015-04-01, , NA, 2015-04; 2015-10-31, 2015-11-02, 3, 2015-

我在R中有一个数据帧,必须为其运行保留报告。我需要运行df销售月年序列/子集的保留公式

Sale_date,  Cancel_date,  days_to_cancel, sale_month;

2015-01-01, 2015-04-06,  95,              2015-01;  
2015-04-01,           , NA,              2015-04;  
2015-10-31, 2015-11-02, 3,               2015-10;  
2013-05-20, 2014-05-20, 365,             2013-05; 
我已将会员销售日期和取消日期列的格式设置为.date。我还创建了一个新的列df$days\u to\u cancellation as.numeric,以提供取消会员资格所需的天数(cancellation date sale date,na.strings=na),并创建了sale\u month列以便于排序。我使用以下公式计算保留百分比: (1-(x天取消率)),其中x可以是15、30、60、90120等…天

例如,要计算10月份售出的60天会员保留期,我将使用:

October_Retention<-1-(sum(df$sale_date>="2015-10-01"&df$sale_date<"2015-11-01"&df$days_to_cancel<=60,na.rm=T)/sum(df$sale_date>="2015-10-01"&df$sale_date<"2015-11-01")

使用dplyr,您可以获得如下每月费率:

library(dplyr)
report <- df %>%
  group_by(sale_month) %>%
  summarise(retention30 = round(sum(is.na(days_to_cancel) | days_to_cancel > 30) / n() * 100, 1),
            rentention60 = round(sum(is.na(days_to_cancel) | days_to_cancel > 60) / n() * 100, 1))
库(dplyr)
报告%
分组(销售月)%>%
总结(保留30=四舍五入(总和为.na(天数到取消)|天数到取消>30)/n()*100,1),
租金60=四舍五入(总和为.na(天数到取消)|天数到取消>60)/n()*100,1)

在这种情况下,我不会在每个保留期内取消。您可以修改标准以满足这方面的需要。

请使用适当的格式布局选项以提高可读性。与其进行痛苦的双重逻辑测试,不如使用“1个月”创建带有
cut.Date
的变量?然后将有一个分类变量传递给聚合类型函数。然后,您还可以在天使用
cut
来取消,然后使用这两种方法中的
交互
。请不要进入SAS/SPSS/BASIC兔子洞,构建命名对象的无数个副本。非常感谢,这看起来像是剪切。日期完成了。