在R中合并两个时间序列

时间:2013-07-14 03:50:29

标签: r time-series

我有一个大的时间序列,H

head(H)
                 time      e1
1 2012-11-15 00:00:00 14.5640
2 2012-11-15 00:20:00 14.5682
3 2012-11-15 00:40:00 14.5670
4 2012-11-15 01:00:00 14.5665
5 2012-11-15 01:20:00 14.5690
6 2012-11-15 01:40:00 14.5687
... ...

和小一(mWL)

                   dt       Date     Time    Q1    Q2    R1    R2 S1 S2 S3    N1    N2     O    T1    T2    T3    T4  M1.1  M1.4 M1.4A
1 2013-04-17 12:00:00 17/04/2013 12:00:00    NA    NA    NA    NA NA NA NA    NA    NA    NA 4.083 4.193 4.325 5.167    NA    NA    NA
2 2013-04-17 13:20:00 17/04/2013 13:20:00    NA    NA    NA    NA NA NA NA    NA    NA    NA    NA    NA    NA    NA 4.886 6.227 6.183
3 2013-04-17 15:20:00 17/04/2013 15:20:00    NA    NA 4.107 4.167 NA NA NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
4 2013-04-17 15:40:00 17/04/2013 15:40:00 5.833 6.405    NA    NA NA NA NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
5 2013-04-17 17:00:00 17/04/2013 17:00:00    NA    NA    NA    NA NA NA NA    NA    NA 6.957    NA    NA    NA    NA    NA    NA    NA
6 2013-04-17 17:20:00 17/04/2013 17:20:00    NA    NA    NA    NA NA NA NA 6.088 7.307    NA    NA    NA    NA    NA    NA    NA    NA
   M1.6 B3 B4 B5 B6 B7 B8 B9 C.1 C.2 C.3 C.4 C.5 F.1 F.2 F.3 F.4 F.5 F.6
1    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
2 6.225 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
3    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
4    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
5    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
6    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA

当我尝试合并H和mWL时,组合的HmW数据框显示H的每个e1值的重复,并且实际上不会根据时间合并:

HmW<-merge(mWL, head, join='inner')

dt       Date     Time    Q1    Q2    R1    R2 S1 S2 S3    N1    N2     O    T1    T2    T3    T4  M1.1  M1.4 M1.4A
1 2013-04-17 12:00:00 17/04/2013 12:00:00    NA    NA    NA    NA NA NA NA    NA    NA    NA 4.083 4.193 4.325 5.167    NA    NA    NA
2 2013-04-17 13:20:00 17/04/2013 13:20:00    NA    NA    NA    NA NA NA NA    NA    NA    NA    NA    NA    NA    NA 4.886 6.227 6.183
3 2013-04-17 15:20:00 17/04/2013 15:20:00    NA    NA 4.107 4.167 NA NA NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
4 2013-04-17 15:40:00 17/04/2013 15:40:00 5.833 6.405    NA    NA NA NA NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
5 2013-04-17 17:00:00 17/04/2013 17:00:00    NA    NA    NA    NA NA NA NA    NA    NA 6.957    NA    NA    NA    NA    NA    NA    NA
6 2013-04-17 17:20:00 17/04/2013 17:20:00    NA    NA    NA    NA NA NA NA 6.088 7.307    NA    NA    NA    NA    NA    NA    NA    NA
   M1.6 B3 B4 B5 B6 B7 B8 B9 C.1 C.2 C.3 C.4 C.5 F.1 F.2 F.3 F.4 F.5 F.6     e1
1    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 14.564
2 6.225 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 14.564
3    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 14.564
4    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 14.564
5    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 14.564
6    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA 14.564
... ...
... ...

我尝试使用R的'zoo'包,但它也会为其中一个时间序列(= H)抛出错误

mWL<- read.zoo(mWL, tz="")    
Hsort<- read.zoo(H, tz="")
    Warning message:
    In zoo(rval3, ix) :
      some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique

要解决的任何想法/明确解释?提前谢谢。

1 个答案:

答案 0 :(得分:0)

以下步骤解决了这个问题:

#make the mWL into XTS
myXTS <- as.xts(mWL, order.by=as.POSIXct(strptime(paste(mWL$Date, mWL$Time),format = "%d/%m/%Y %H:%M:%S")))
#then merge with the existing time-series
HmW<-merge(myXTS, H, join='inner')

head(HmW)
                    Date Time    Q1    Q2    R1    R2 S1 S2 S3    N1    N2     O    T1    T2    T3
2013-04-17 12:00:00   NA   NA    NA    NA    NA    NA NA NA NA    NA    NA    NA 4.083 4.193 4.325
2013-04-17 13:20:00   NA   NA    NA    NA    NA    NA NA NA NA    NA    NA    NA    NA    NA    NA
2013-04-17 15:20:00   NA   NA    NA    NA 4.107 4.167 NA NA NA    NA    NA    NA    NA    NA    NA
2013-04-17 15:40:00   NA   NA 5.833 6.405    NA    NA NA NA NA    NA    NA    NA    NA    NA    NA
2013-04-17 17:00:00   NA   NA    NA    NA    NA    NA NA NA NA    NA    NA 6.957    NA    NA    NA
2013-04-17 17:20:00   NA   NA    NA    NA    NA    NA NA NA NA 6.088 7.307    NA    NA    NA    NA
                       T4  M1.1  M1.4 M1.4A  M1.6 B3 B4 B5 B6 B7 B8 B9 C.1 C.2 C.3 C.4 C.5 F.1 F.2
2013-04-17 12:00:00 5.167    NA    NA    NA    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA
2013-04-17 13:20:00    NA 4.886 6.227 6.183 6.225 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA
2013-04-17 15:20:00    NA    NA    NA    NA    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA
2013-04-17 15:40:00    NA    NA    NA    NA    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA
2013-04-17 17:00:00    NA    NA    NA    NA    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA
2013-04-17 17:20:00    NA    NA    NA    NA    NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA
                    F.3 F.4 F.5 F.6      e1
2013-04-17 12:00:00  NA  NA  NA  NA 11.6286
2013-04-17 13:20:00  NA  NA  NA  NA 11.6253
2013-04-17 15:20:00  NA  NA  NA  NA 11.6283
2013-04-17 15:40:00  NA  NA  NA  NA 11.6271
2013-04-17 17:00:00  NA  NA  NA  NA 11.6319
2013-04-17 17:20:00  NA  NA  NA  NA 11.6321