通过插值替换 NA

Replace NAs through interpolation

我有一个具有以下结构的不平衡面板:

   Cntry  Year  Gini 
   AU     1980  NA
   AU     1981  NA
   AU     ...   NA
   AU     1985  0.409
   AU     1986  0.406
   AU     1989  0.41
   AU     ....
   AU     2001  0.45
   AU     2002  NA
   AU     2003  NA 

其他国家也有类似的模式。由于 Gini 将成为我的因变量定义的一部分,我想做的是对 NA 进行插值,这样我就可以获得多年的 Gini 信息,在这些年中我对控件进行了观察。

我首先尝试的是使用 zoo 包和 na.spline 函数进行插值:

range_completed$gini_priY=na.spline(range_completed$gini_priY)

但是,通过这种方式,它替换了基尼变量中的所有值(例如 1985 年的 0.409)。

我该如何解决这个问题? 谢谢!

你可以像这样为你的估算引入中间变量:

library(data.table)
setDT(range_completed)
range_completed[, gini_priY_estimate := na.spline(gini_priY)]
range_completed[is.na(gini_priY), gini_priY :=gini_priY_estimate]

我想你需要的是is_na功能

range_completed[is.na(gini_priY), gini_priY :=gini_priY_estimate]

识别 NA 案例或使用内置函数 na_interpolation