我有一个 Dataframe ,看起来像这样:
z <- data.frame(ent = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
year = c(1995, 2000, 2005, 1995, 2000, 2005, 1995, 2000, 2005),
pobtot = c(50, 60, 70, 10, 4, 1, 100, 105, 110))
正如你所看到的,每个ent
之间有5年的差距。我想将数据插值到每个缺失的年份:1996年、1997年、1998年、1999年、2001年、2002年、2003年、2004年,并预测2006年、2007年和2008年。有办法做到这一点吗?
任何帮助将不胜感激。
2条答案
按热度按时间zi8p0yeb1#
我们可以使用
complete
扩展每个'ent'和'year'范围的数据,然后使用na.approx
插值'pobtot'中的缺失值wwodge7n2#
假设您需要线性插值,R默认使用
approx()
进行此类插值,例如:用来在图中画线。我们也可以使用该函数来插值年份。虽然它不能外推,但我们可以使用forecast::ets()
和默认设置来计算指数平滑状态空间模型。然而,请注意,这也可能产生负值,但OP没有说明在这种情况下需要什么。因此,无论如何,在by()
方法中,我们可以做到:结果
我们可以在一个图中快速检查这一点,除了实体2的负值之外,它看起来非常合理。