2013-07-13 48 views
0

您好我有一個小的不連續的時間序列數據(MWL):合併兩個時間序列到一個新的數據幀,使用R

> print(mWL) 
        dt Q1 Q2 R1 R2 S1 S2 S3 N1 N2  O 
1 2013-05-25 12:00:00 NA NA NA NA NA NA NA NA NA NA 
2 2013-05-25 13:20:00 NA NA NA NA NA NA NA NA NA NA 
3 2013-05-25 15:20:00 NA NA 4.107 4.167 NA NA NA NA NA NA 
4 2013-05-25 15:40:00 5.833 6.405 NA NA NA NA NA NA NA NA 
5 2013-05-25 17:00:00 NA NA NA NA NA NA NA NA NA 6.957 
6 2013-05-25 17:20:00 NA NA NA NA NA NA NA 6.088 7.307 NA 

我也有一個相當大的連續的(每隔20分鐘)數據庫(H),其中還包含了一些時間measuremnts的「MWL」

tail(H,n=80) 
        time  e1 
13782 2013-05-25 09:40:00 12.8452 
13783 2013-05-25 10:00:00 12.8429 
13784 2013-05-25 10:20:00 12.8376 
13785 2013-05-25 10:40:00 12.8362 
13786 2013-05-25 11:00:00 12.8338 
13787 2013-05-25 11:20:00 12.8359 
13788 2013-05-25 11:40:00 12.8371 
13789 2013-05-25 12:00:00 12.8380 
13790 2013-05-25 12:20:00 12.8355 
13791 2013-05-25 12:40:00 12.8380 
13792 2013-05-25 13:00:00 12.8396 
13793 2013-05-25 13:20:00 12.8418 
13794 2013-05-25 13:40:00 12.8403 
13795 2013-05-25 14:00:00 12.8427 
13796 2013-05-25 14:20:00 12.8443 
13797 2013-05-25 14:40:00 12.8453 
13798 2013-05-25 15:00:00 12.8460 
13799 2013-05-25 15:20:00 12.8483 
13800 2013-05-25 15:40:00 12.8508 
13801 2013-05-25 16:00:00 12.8528 
13802 2013-05-25 16:20:00 12.8547 
13803 2013-05-25 16:40:00 12.8559 
13804 2013-05-25 17:00:00 12.8579 
13805 2013-05-25 17:20:00 12.8594 
13806 2013-05-25 17:40:00 12.8613 

我要讓合併「MWL」(即只有6行)與H $ E1數據大小的新數據幀同一時間;但是當我嘗試使用align.time時,數據幀仍然很大並且'mWL'數據重複!

require(xts) 
Hsort<-align.time(xts(H[,2],as.POSIXct(H[,1])), n=1200) 
mWLsort<-align.time(xts(mWL[,2],as.POSIXct(mWL[,1])), n=1200) 
merge(H, mWLsort) 

有什麼建議?

回答

2

all的缺省值對於merge.zoo爲真,其中merge.xts(如果存在)可能是繼承或遵循動物園作者的領導。所以設置all = c(FALSE, TRUE)如果你只是想要在第二個對象的項目進行匹配。 (這是在base::mergeall默認設置的相反,所以我可以肯定明白,如果你感到困惑我,直到我看了看:

help(package="zoo", merge.zoo) 
help(package="xts", merge.xts) 
+0

我嘗試「動物園」,但是當我嘗試用「 H'數據爲:Hsort < - read.zoo(H,FUN = as.chron),它給出錯誤消息 - 「在動物園(rval3,ix)中:如果索引'order.by'中的條目並不是唯一的「,所以我無法進入'合併'步驟 – ToNoY

+0

我沒有建議對'zoo'做任何事情,只要'merge.xts'和'all = c(FALSE,TRUE)'我試圖幫助你理解xts包的遺產 –

+0

我明白如何使用all = F或join ='inner'來限制合併的對象,但它僅基於小時合併/分鐘,不考慮ering約會,這可能是爲什麼我得到非常大的合併對象! – ToNoY