Мне нужно сложить значения, соответствующие определенному диапазону дат, и мне нужно сделать это для многих предметов.
В следующем примере df1 содержит даты начала и окончания трех предметов, а df2 содержит даты и их соответствующие значения:
df1<-data.frame(sub=c("a","b","c"),
start=as.Date(c("2015/10/13","2015/10/13","2015/10/11")),
end=as.Date(c("2015/10/16","2015/10/18","2015/10/15")))
df2<-data.frame(date=seq(as.Date("2015/10/11"), as.Date("2015/10/18"), "days"),
value=c(32,30,28,15,19,23,35,18))
> df1
sub start end
1 a 2015-10-13 2015-10-16
2 b 2015-10-13 2015-10-18
3 c 2015-10-11 2015-10-15
> df2
date value
1 2015-10-11 32
2 2015-10-12 30
3 2015-10-13 28
4 2015-10-14 15
5 2015-10-15 19
6 2015-10-16 23
7 2015-10-17 35
8 2015-10-18 18
Я хочу суммировать value
в df2 с start
даты до end
даты в df1, и я хочу сделать это для каждого sub
(в реальной задаче есть много предметов (т.е. пары начинающих и даты окончания), и поэтому я думаю, что я должен использовать цикл for
).
Я ожидаю что-то вроде этого:
sub sum
a 85
b 138
c 124
, где a = 28 + 15 + 19 + 23, b = 28 + 15 + 19 + 23 + 35 + 18 и c = 32 + 30 + 28 + 15 + 19
Любая помощь приветствуется