合并数据与不规则时间

时间:2015-03-31 05:14:09

标签: r date merge time-series

我正在尝试将虚拟变量组合到不规则的时间序列 x

如果虚拟变量出现在不存在的日期 x 。然后,虚拟变量将出现在 x

中的下一个日期

为了说明我的问题,这是一个例子:

假设我在2000-12-15和2000-2-18发生的事件中有虚拟变量:

dummy <-zoo(1,as.Date(c( "2000-12-15", "2000-12-18")))

我有一个时间序列 x

x <-zoo(rnorm(5),as.Date(c("2000-12-15", "2000-12-16", 
"2000-12-17","2000-12-20", "2000-12-21")))

组合后我想要的是:

                    x dummy
2000-12-15  0.5431835     1
2000-12-16 -1.5612897     0
2000-12-17 -0.1944823     0
2000-12-20  1.2124671     1
2000-12-21 -1.2948487     0

对于2000-12-15的事件,事件发生在 x 中的日期。因此,这里没有问题。但是,对于2000-12-8中发生的事件, x 中的日期不存在。我希望虚拟变量移动到 x 中的下一个日期,即2000-12-20。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

y <-zoo(1,as.Date(c( "2000-12-15", "2000-12-18")))

x <-zoo(rnorm(5),as.Date(c("2000-12-15", "2000-12-16", 
                       "2000-12-17","2000-12-20", "2000-12-21")))
data<-merge(x,y,all=TRUE)

n<-length(data$x)-1
for(i in 1:n){
  if(is.na(data$x[i]))
   data$y[i+1]<-1
 }

data<-data[complete.cases(data$x),]
data[is.na(data$y),]<-0