我正在尝试将虚拟变量组合到不规则的时间序列 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。我怎么能这样做?
答案 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