如何根据其他数据帧时间索引聚合一个数据帧?

How to aggregate one data frame based on other data frame time index?

我有两个数据框,都是时间序列数据。一种是有规律的间隔(每天),另一种是不规律的。但是第二个是基于第一个的累计值。例如,这是一个例子:

    date1<-c('2010-01-01', '2010-01-02', '2010-01-03', '2010-01-04', '2010-01-05','2010-01-06','2010-01-07')

   data.frame1<-data.frame(date=c(as.Date(date1, format= '%Y-%m-%d')), A=c(0.5,10,15,3,10,20,12) , B=c(1.5,1,1.5,3.2,10.5,9,12)) 

       date       A    B
     2010-01-01   0.5  1.5
     2010-01-02  10.0  1.0
     2010-01-03  15.0  1.5
     2010-01-04   3.0  3.2
     2010-01-05  10.0 10.5
     2010-01-06  20.0  9.0
     2010-01-07  12.0 12.0

   date2<-c('2010-01-03', '2010-01-07')

   data.frame2<-data.frame(date=c(as.Date(date2, format= '%Y-%m-%d')), A=c(25.5,45) , B=c(4,34.7)) 

         date      A    B
     2010-01-03   25.5   4
     2010-01-07   45    37.7

data.frame2的第一行(2010-01-03)是data.frame1的三行(2010-01-01、2010-01-02、2010-01-03)的累加值. 现在我想比较一下。但是之前,我必须对 data.frame1 进行聚合,以便可以直接进行比较。请注意,data.frame2 的时间间隔是不规则的。谁能帮我怎么做?谢谢!

使用 sapply 在 data2 中查找相应的日期是一种方法。

data.frame1$date <- as.character(data.frame1$date)
data.frame2$date <- as.character(data.frame2$date)

data.frame1$date2 <- sapply(data.frame1$date, function(d) 
  with(data.frame2, min(date[d <= date])))

library(dplyr)
group_by(data.frame1, date2) %>% summarize(A = sum(A), B = sum(B))