本文主要介绍如何利用R语言进行数值型缺失值的填补。主要使用zoo包中的na.aggregate() 、na.approx()、na.locf() 函数进行缺失值的均值填补
、线性插值填补
以及邻近值填补
。
1、数据准备
install.packages("zoo")
library(zoo)
set.seed(1234)
my_NA <- data.frame(
year = c(1991:2020),
value = sample(c(NA, 100, 110, 120), 30, replace = TRUE))
my_NA
# year value
#1 1991 120
#2 1992 120
#3 1993 100
#4 1994 100
#5 1995 NA
#6 1996 120
#7 1997 110
#8 1998 NA
#9 1999 NA
#10 2000 100
#...
#...
#26 2016 120
#27 2017 NA
#28 2018 120
#29 2019 120
#30 2020 120
2、插值方法
2.1 均值法
na.aggregate(my_NA$value) #均值法
# [1] 120.0000 120.0000 100.0000 100.0000 110.3846 120.0000 110.0000 110.3846 110.3846 100.0000 120.0000 120.0000 100.0000 110.0000
#[15] 100.0000 100.0000 100.0000 110.0000 100.0000 120.0000 100.0000 100.0000 120.0000 100.0000 120.0000 120.0000 110.3846 120.0000
#[29] 120.0000 120.0000
2.2 线性插值法
na.approx(my_NA$value) #插值法
# [1] 120.0000 120.0000 100.0000 100.0000 110.0000 120.0000 110.0000 106.6667 103.3333 100.0000 120.0000 120.0000 100.0000 110.0000
#[15] 100.0000 100.0000 100.0000 110.0000 100.0000 120.0000 100.0000 100.0000 120.0000 100.0000 120.0000 120.0000 120.0000 120.0000
#[29] 120.0000 120.0000
2.3 邻近法,与前一个值邻近
na.locf(my_NA$value) #邻近法
# [1] 120 120 100 100 100 120 110 110 110 100 120 120 100 110 100 100 100 110 100 120 100 100 120 100 120 120 120 120 120 120
2.4 邻近法,与后一个值邻近
na.locf(my_NA$value, fromLast = TRUE) #邻近法
# [1] 120 120 100 100 120 120 110 100 100 100 120 120 100 110 100 100 100 110 100 120 100 100 120 100 120 120 120 120 120 120
3、其他
关于缺失值的查看与处理等问题可进一步阅读R数据分析|缺失值的查找、探索、删除与替换。
如有帮助请多多点赞哦!
文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




