通过插值替换 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
我有一个具有以下结构的不平衡面板:
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