插值以估计 R 中的中间年份数据
Interpolation to estimate the middle years data in R
我每个ID都有两年的数据,其中y2011
和y2016
分别代表2011年和2016年的数据。
id <- c(1:5)
y2011 <- c(100,200,150,121,20)
y2016 <- c(111,195,180,121,25)
dat <- data.frame(id, y2011, y2016)
现在我想通过插值法估计2012年、2013年、2014年、2015年中年的大概数据。我如何使用 R 执行此操作?我在 R 中尝试了 approx
函数。
approx(dat$y2011, dat$y2016)
但没有得到妥善解决
这是一种选择。您基本上需要为每一行调用 approx
,所以我为此使用 mapply
。
middle_years <- t(mapply(function(a, b) approx(c(2011,2016), c(a,b), 2012:2015)$y, dat$y2011, dat$y2016))
colnames(middle_years) <- paste0("y", 2012:2015)
cbind(dat, middle_years)
# id y2011 y2016 y2012 y2013 y2014 y2015
# 1 1 100 111 102.2 104.4 106.6 108.8
# 2 2 200 195 199.0 198.0 197.0 196.0
# 3 3 150 180 156.0 162.0 168.0 174.0
# 4 4 121 121 121.0 121.0 121.0 121.0
# 5 5 20 25 21.0 22.0 23.0 24.0
我每个ID都有两年的数据,其中y2011
和y2016
分别代表2011年和2016年的数据。
id <- c(1:5)
y2011 <- c(100,200,150,121,20)
y2016 <- c(111,195,180,121,25)
dat <- data.frame(id, y2011, y2016)
现在我想通过插值法估计2012年、2013年、2014年、2015年中年的大概数据。我如何使用 R 执行此操作?我在 R 中尝试了 approx
函数。
approx(dat$y2011, dat$y2016)
但没有得到妥善解决
这是一种选择。您基本上需要为每一行调用 approx
,所以我为此使用 mapply
。
middle_years <- t(mapply(function(a, b) approx(c(2011,2016), c(a,b), 2012:2015)$y, dat$y2011, dat$y2016))
colnames(middle_years) <- paste0("y", 2012:2015)
cbind(dat, middle_years)
# id y2011 y2016 y2012 y2013 y2014 y2015
# 1 1 100 111 102.2 104.4 106.6 108.8
# 2 2 200 195 199.0 198.0 197.0 196.0
# 3 3 150 180 156.0 162.0 168.0 174.0
# 4 4 121 121 121.0 121.0 121.0 121.0
# 5 5 20 25 21.0 22.0 23.0 24.0