У меня есть датафрейм, как показано ниже:
ID Group SubmitDate BookDate Amount Total
1 A 2011-01-01 2011-01-01 100 0
2 A 2011-10-01 2011-05-01 0 100
3 B 2012-01-01 2012-02-20 500 0
4 B 2012-02-01 2012-04-01 300 0
5 B 2012-03-01 2012-03-15 400 500
6 B 2012-03-16 2012-03-18 900 900
Я хочу Сумма для каждого идентификатора, которая равна сумме Сумма для предыдущих строк в той же группе, если SubmitDate текущей строки после BookDate предыдущегострок.
т.е. для идентификатора 5, SubmitDate идентификатора 5 только после BookDate идентификатора 3 (мы смотрим только идентификаторы в той же группе), то всего = 500
для идентификатора 6, SubmitDateс идентификатором 6 только после BookDate с идентификаторами 3 и 5 (мы рассматриваем только идентификаторы в той же группе), затем всего = 500 + 400 = 900
, чтобы восстановить этот пример
data <- data.frame(ID = c(1,2,3,4,5,6),
Group = c("A","A","B","B","B","B"),
SubmitDate = as.Date(c("2011-01-01","2011-10-01","2012-01-01","2012-02-01","2012-03-01","2012-03-16")),
BookDate = as.Date(c("2011-01-01","2011-05-01","2012-02-20","2012-04-01","2012-03-15","2012-03-18")),
Amount = as.numeric(c("100","0","500","300","400","900")))
Я думал об этом, но он сравнивает только submitl и bookDate текущих строк.
data %>% group_by(Group) %>% mutate(Total= cumsum( SubmittalDate <BookedDate ) )