, , .
Record_Date <- as.Date(c(31,33,38,41,44,59,68,69,75,78,85,88,
32,34,45,46,51,54,60,65,67,70,74,80,
33,35,42,45,50,60,65,70,75,80,82,85),origin="2010-01-01")
Cust_ID <- c(rep(1,12),rep(2,12),rep(3,12))
library("data.table")
data <- data.table(Cust_ID,Record_Date)
Cust_ID Record_Date
1: 1 2010-02-01
2: 1 2010-02-03
3: 1 2010-02-08
4: 1 2010-02-11
5: 1 2010-02-14
6: 1 2010-03-01
7: 1 2010-03-10
8: 1 2010-03-11
9: 1 2010-03-17
10: 1 2010-03-20
11: 1 2010-03-27
12: 1 2010-03-30
13: 2 2010-02-02
14: 2 2010-02-04
15: 2 2010-02-15
16: 2 2010-02-16
17: 2 2010-02-21
, R , , , data.table .
output <- data[,as.list(data[,list(Cust_ID2=Cust_ID,Compare_Date=Record_Date)]),
by=c("Cust_ID","Record_Date")][Cust_ID==Cust_ID2 & Compare_Date>=Record_Date,list(Cust_ID,Record_Date,Compare_Date,
Within14=(as.numeric(Compare_Date-Record_Date)<=14)*1)][,list(Within14=(sum(Within14)-1)),by=c("Cust_ID","Record_Date")]
Cust_ID Record_Date Within14
1: 1 2010-02-01 4
2: 1 2010-02-03 3
3: 1 2010-02-08 2
4: 1 2010-02-11 1
5: 1 2010-02-14 0
6: 1 2010-03-01 2
7: 1 2010-03-10 3
8: 1 2010-03-11 2
9: 1 2010-03-17 3
10: 1 2010-03-20 2
11: 1 2010-03-27 1
12: 1 2010-03-30 0
13: 2 2010-02-02 3
14: 2 2010-02-04 2
15: 2 2010-02-15 3
16: 2 2010-02-16 3
17: 2 2010-02-21 3
:
Record_Date <- as.Date(c("2014-03-01","2014-01-18","2014-03-04","2014-03-21","2014-01-25","2014-03-01",
"2014-04-01","2014-04-02"))
Cust_ID <- c("023","056","041","023","056","003","023","023")
data <- data.table(Cust_ID,Record_Date)
output <- data[,as.list(data[,list(Cust_ID2=Cust_ID,Compare_Date=Record_Date)]),
by=c("Cust_ID","Record_Date")][Cust_ID==Cust_ID2 & Compare_Date>=Record_Date,list(Cust_ID,Record_Date,Compare_Date,
Within14=(as.numeric(Compare_Date-Record_Date)<=14)*1)][,list(Within14=(sum(Within14)-1)),by=c("Cust_ID","Record_Date")]
output
Cust_ID Record_Date Within14
1: 023 2014-03-01 0
2: 056 2014-01-18 1
3: 041 2014-03-04 0
4: 023 2014-03-21 2
5: 056 2014-01-25 0
6: 003 2014-03-01 0
7: 023 2014-04-01 1
8: 023 2014-04-02 0