如何快速用 NA 的前一行和下一行的平均值替换 NA?
name grade
1 A 56
2 B NA
3 C 70
4 D 96
这样 B 的成绩就是 63。
最佳答案
或者您可以尝试 zoo
包中的 na.approx
:“缺失值 (NA) 由线性插值替换”
library(zoo)
x <- c(56, NA, 70, 96)
na.approx(x)
# [1] 56 63 70 96
如果您有多个连续的NA
,这也适用:
vals <- c(1, NA, NA, 7, NA, 10)
na.approx(vals)
# [1] 1.0 3.0 5.0 7.0 8.5 10.0
na.approx
基于 base
函数 approx
,可以改为使用:
vals <- c(1, NA, NA, 7, NA, 10)
xout <- seq_along(vals)
x <- xout[!is.na(vals)]
y <- vals[!is.na(vals)]
approx(x = x, y = y, xout = xout)$y
# [1] 1.0 3.0 5.0 7.0 8.5 10.0
关于将 NA 替换为 R 中的上一行和下一行平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916525/