R:在timeSeries对象上运行na.spline()时如何保留时间索引?

时间:2014-11-04 18:22:55

标签: r time-series zoo

当创建具有缺失值的timeSeries对象并通过na.spline()函数替换NA时,结果将变为不再具有时间索引的数据结构。如何纠正?

假设一个timeSeries对象,例如:

# Some data setup
Lines.x <- '"1987-01-01"   7.1    NA   3
"1987-01-02"   5.2    5    2
"1987-01-06"   2.3    NA   9'
Lines.y <- '"1987-01-01"   55.3   66   45
"1987-01-03"   77.3   87   34'

# Create timeSeries object
x <- read.zoo(text = Lines.x)
y <- read.zoo(text = Lines.y)
z <- as.timeSeries(merge(x,  y))

z是一个合适的timeSeries对象:

str(z)

Time Series:          
 Name:               object
Data Matrix:        
 Dimension:          4 6
 Column Names:       V2.x V3.x V4.x V2.y V3.y V4.y
 Row Names:          1987-01-01  ...  1987-01-06
Positions:          
 Start:              1987-01-01
 End:                1987-01-06
With:               
 Format:             %Y-%m-%d
 FinCenter:          GMT
 Units:              V2.x V3.x V4.x V2.y V3.y V4.y
 Title:              Time Series Object
 Documentation:      Tue Nov  4 19:09:43 2014

head(z)

GMT
           V2.x V3.x V4.x V2.y V3.y V4.y
1987-01-01  7.1   NA    3 55.3   66   45
1987-01-02  5.2    5    2   NA   NA   NA
1987-01-03   NA   NA   NA 77.3   87   34
1987-01-06  2.3   NA    9   NA   NA   NA

但是当我运行Q <- na.spline(z)时,结果会丢失时间信息。

str(Q)
 num [1:4, 1:6] 7.1 5.2 3.6 2.3 5 5 5 5 3 2 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:6] "V2.x" "V3.x" "V4.x" "V2.y" ...

head(Q)
     V2.x V3.x V4.x V2.y V3.y V4.y
[1,]  7.1    5    3 55.3 66.0 45.0
[2,]  5.2    5    2 66.3 76.5 39.5
[3,]  3.6    5    4 77.3 87.0 34.0
[4,]  2.3    5    9 88.3 97.5 28.5

如何避免时间指数的损失或干扰?

编辑:为了进一步增加兴奋,以下命令序列在zoo对象中保留至少一些时间索引(但仅当as.zoo()是外部转换时):

Q <- as.zoo(as.timeSeries(z))
Q <- na.spline(Q)

0 个答案:

没有答案