2015-11-07 55 views
-1

enter image description here時間序列數據安排

我有幾個時間序列數據,我想在進一步分析之前作出安排。重點是,正如你在圖片中看到的那樣,3個財務時間序列具有不同的日期 - 被觀察到。如果至少有一個空白行,我想消除整行。爲了做出安排,首先我將整個日期排除在左側,除了2005年1月1日至2015年6月30日的星期六和星期日進行索引。

例如:在第11行,存在不匹配的日期。我想把NA列放在中間。

這裏就是我試過

Day=data.frame(test[,1:2]) 
Rk=data.frame(test[,3:4]) 
Vix=data.frame(test[,5:6]) 
BA=data.frame(test[,7:8]) 

i=1 
k=0 
while(i<=2736){ 
if(Day[i,1]==Rk[i,1]){i=i+1} 
else if(Day[i,1]!=Rk[i,1]){ 
k=k+1 
Rk[i+1:k+2634,]=Rk[i:k+2633,] 
Rk[i,]=c(Day[i,1],NA) 
i=i+1} 

} 

,但它顯示錯誤消息:更換不更換長度的倍數

我會非常感激的項目數量。任何形式的幫助都會比歡迎。

+0

我找到了解決這個問題的線索。如果您遇到困難,我建議您將NA列放在中間並使其循環。 – Song

+0

你應該說這是什麼語言,否則沒有人可以回答會看到它。 –

+0

對不起,我錯過了。這是R碼。 – Song

回答

0

如果使用像xts(或動物園)這樣的時間序列類,這很容易。

# create sample data 
set.seed(21) 
dayone <- as.Date("2005-01-03") 
plusdays <-c(0:4, 7:11, 14:18, 21:24) 
test <- data.frame(date=dayone + plusdays) 
test$day <- weekdays(test$date, abbreviate=TRUE) 
test$date.1 <- dayone + c(plusdays[-11L], 25) 
test$Kernel <- rnorm(nrow(test), 3e-5, 1e-6) 
test$date.2 <- dayone + c(plusdays[-11L], 25) 
test$VIX.High <- round(rnorm(nrow(test), 14, 0.1), 2) 
test$date.3 <- dayone + c(plusdays[-11L], 25) 
test$Baa.Aaa <- round(rnorm(nrow(test), 0.66, 0.01), 2) 

require(xts) 
# create xts objects for each column 
Rk <- xts(test['Kernel'], test$date.1) 
Vix <- xts(test['VIX.High'], test$date.2) 
Ba <- xts(test['Baa.Aaa'], test$date.3) 
# use xts to merge data 
testxts <- merge(xts(,test$date), Rk, Vix, Ba) 

我已經離開了你day列,因爲XTS /動物園對象只是一個索引屬性矩陣,你不能在基質混合類型。但是您可以使用.indexwday函數來提取每行的工作日。