【发布时间】:2019-11-02 13:09:31
【问题描述】:
我有一个时间序列(波高数据),我需要通过插值来填补空白。我在zoo 包中找到了na.approx 函数来执行此操作,但是我还没有找到一种方法可以在缺失的观察值更接近另一个观察值时将其考虑在内。
例子:
library(zoo)
test = data.frame(Wave_Height = c(1.2, NA, 0.5), Data =
as.POSIXct(c("2019-01-01 00:00", "2019-01-01 05:00", "2019-01-01 06:00"),
format = "%Y-%m-%d %H:%M"))
> test
Wave_Height Data
1 1.2 2019-01-01 00:00:00
2 NA 2019-01-01 05:00:00
3 0.5 2019-01-01 06:00:00
test$Wave_Height = na.approx(test$Wave_Height)
> test
Wave_Height Data
1 1.20 2019-01-01 00:00:00
2 0.85 2019-01-01 05:00:00
3 0.50 2019-01-01 06:00:00
我觉得某处应该有一个权重参数,但是通过扫描文档我无法找到它。我正在寻找这样的结果:
> test
Wave_Height Data
1 1.20 2019-01-01 00:00:00
2 0.62 2019-01-01 05:00:00
3 0.50 2019-01-01 06:00:00
【问题讨论】:
-
据我所知动物园也能够对不规则的时间序列进行插值。我认为您必须首先创建一个动物园时间序列(动物园正确识别时间戳),然后执行 na.approx。所以从你的 data.frame 中创建一个动物园系列,然后再试一次。
标签: r time-series interpolation zoo