2015-03-31 82 views
1

我試圖將虛擬變量結合到不規則時間序列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
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