当创建具有缺失值的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)