用插值法估计R中的中期数据

用插值法估计R中的中期数据,r,interpolation,R,Interpolation,我有每个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) 但是不要得到正确的解决方案。这里有一个选择。您需要为每一行调用approx,因此我使用mapply来实现这一点 middle_years <- t(mapp

我有每个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)

但是不要得到正确的解决方案。

这里有一个选择。您需要为每一行调用
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

中年这里有一个选择。您需要为每一行调用
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

middle\您使用的
approx
代码是什么样子的?我们可能可以为您修复它,而无需从头开始。我尝试过使用此-approx(dat$y2011,dat$y2016)。您使用
approx
的代码是什么样子的?我们可能可以为您修复它,而无需从头开始。我已经尝试使用这个-大约(dat$y2011,dat$y2016)。太棒了!非常感谢!伟大的非常感谢!