.
data.table
:
library(lubridate)
library(data.table)
setDT(df)[, answer :=
df[.(id = id, date1 = date, date2 = date %m+% months(2)),
on = .(id, date >= date1, date <= date2),
as.integer(any(lapse == 1)), by = .EACHI]$V1][
call == 0, answer := 0][]
id date call lapse call_2months_or_less_before_lapse answer
1: 1 2014-01-01 1 0 1 1
2: 1 2014-02-07 0 1 0 0
3: 1 2014-03-05 0 1 0 0
4: 1 2014-03-14 1 0 0 1
5: 1 2014-04-15 1 0 1 1
6: 1 2014-04-17 1 0 1 1
7: 1 2014-05-11 0 1 0 0
8: 1 2014-08-19 1 0 0 0
9: 1 2014-10-07 1 0 0 0
10: 1 2014-12-21 0 1 0 0
11: 3 2010-06-04 0 1 0 0
12: 3 2012-03-06 0 1 0 0
13: 3 2012-07-12 0 1 0 0
14: 3 2012-07-13 0 1 0 0
15: 3 2014-01-14 1 0 0 0
16: 3 2014-05-05 0 1 0 0
17: 3 2014-08-19 1 0 1 1
18: 3 2014-08-19 0 1 0 0
19: 4 2013-02-13 0 1 0 0
20: 4 2013-11-11 1 0 0 0
21: 4 2014-03-04 1 0 0 0
22: 4 2014-12-10 1 0 0 0
23: 4 2017-03-02 1 0 1 1
24: 4 2017-03-03 0 1 0 0
id date call lapse call_2months_or_less_before_lapse answer
, 4 OP, .
, ( ), 2 . , - . , 1
0
, .
equi:
df[.(id = id, date1 = date, date2 = date %m+% months(2)),
on = .(id, date >= date1, date <= date2),
as.integer(any(lapse == 1)), by = .EACHI]
df
data.table
, " ", .()
, id
, date
date %m+% months(2)
. lubridate
OP 2- ( 60 ).
on
, , .. id
, . (by = .EACHI
), any()
.
df
answer
. :=
df
, .
, answer
, .
setDT(df)
df
data.table
.
:
library(lubridate)
df <- data.frame(
id = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4),
date = dmy(c("01-01-2014", "07-02-2014", "05-03-2014", "14-03-2014", "15-04-2014", "17-04-2014",
"11-05-2014", "19-08-2014", "07-10-2014", "21-12-2014", "04-06-2010", "06-03-2012",
"12-07-2012", "13-07-2012", "14-01-2014", "05-05-2014", "19-08-2014", "19-08-2014",
"13-02-2013", "11-11-2013", "04-03-2014", "10-12-2014", "02-03-2017", "03-03-2017")),
call = c(1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0),
lapse = c(0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1))
, 4 OP. 4 "14-02-2014"
, . , "14-03-2014"
, .
, call_2months_or_less_before_lapse
, OP 0
. 1
. "14-02-2014"
3 . "14-03-2014"
7 .