我有两个数据框,都是时间序列数据。一个是定期间隔(每天),另一个是不规则的。但第二个是基于第一个的累积值。例如,这是一个例子:
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的时间间隔是不规则的。任何人都可以帮我怎么做?谢谢!
答案 0 :(得分:0)
使用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))