我有一组客户,他们的日常活动日志(log),如果他们有和问题提出在他们的帐户.客户可以在其作为客户的整个期间多次在其帐户上提出问题,并且问题可能会持续数天.我想弄清楚每个帐户提出问题的持续时间.日期可以从任何地方开始,问题可以在任何时间发生,在下面的示例中另存为TRUE=1和FALSE=0.
以下是一些示例数据:
df <- data.frame(customer= c('AB','AB','AB','AB','AB',
'BC','BC','BC',
'CD','CD','CD','CD'),
date=as.Date(c("11/09/2000","12/09/2000","13/09/2000",
"14/09/2000","15/09/2000",
"13/09/2000","14/09/2000","15/09/2000",
"23/05/2001","24/05/2001","25/05/2001",
"26/05/2001"), "%d/%m/%Y"),
issue=c(0,1,1,1,1,0,0,1,1,0,1,1))
我试着做了一个索引计数器,以及在这个线程中发现的其他一些变体:Calculate days since last event in R,但它不计算连续的天数(即AB每天都显示持续时间为1,而不是2,3,4),如下所示:
customer | date | issue | duration |
---|---|---|---|
AB | 2000-09-11 | 0 | 0 |
AB | 2000-09-12 | 1 | 1 |
AB | 2000-09-13 | 1 | 1 |
AB | 2000-09-14 | 1 | 1 |
AB | 2000-09-15 | 1 | 1 |
我需要的输出类似于:
customer | date | issue | duration |
---|---|---|---|
AB | 2000-09-11 | 0 | 0 |
AB | 2000-09-12 | 1 | 1 |
AB | 2000-09-13 | 1 | 2 |
AB | 2000-09-14 | 1 | 3 |
AB | 2000-09-15 | 1 | 4 |
BC | 2000-09-13 | 0 | 0 |
BC | 2000-09-14 | 0 | 0 |
BC | 2000-09-15 | 1 | 1 |
CD | 2000-05-23 | 1 | 1 |
CD | 2000-05-24 | 0 | 0 |
CD | 2000-05-25 | 1 | 1 |
CD | 2000-05-26 | 1 | 2 |