【问题标题】:Interpolation to estimate the middle years data in R插值以估计 R 中的中间年份数据
【发布时间】:2019-05-02 01:23:43
【问题描述】:

每个ID我都有两年的数据,其中y2011y2016分别代表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 的代码是什么样的?我们或许可以为您修复它,而无需从头开始。
  • 我试过用这个 - approx(dat$y2011, dat$y2016) 。

标签: r interpolation


【解决方案1】:

这是一种选择。你需要为每一行调用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

【讨论】:

  • 太棒了!非常感谢!
猜你喜欢
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2020-11-25
  • 2020-12-24
  • 2020-08-10
  • 1970-01-01
相关资源
最近更新 更多