用R中的上一行和下一行替换NA [英] Replace NA with previous and next rows mean in R
本文介绍了用R中的上一行和下一行替换NA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何快速用NA替换上一行和下一行?
How could I Replace a NA with mean of its previous and next rows in a fast manner?
name grade
1 A 56
2 B NA
3 C 70
4 D 96
使得B的等级为63.
推荐答案
或者您可以尝试从程序包zoo
中的na.approx
:缺少的值(NA)替换为线性插值"
Or you may try na.approx
from package zoo
: "Missing values (NAs) are replaced by linear interpolation"
library(zoo)
x <- c(56, NA, 70, 96)
na.approx(x)
# [1] 56 63 70 96
如果您有多个连续的NA
,这也可以使用:
This also works if you have more than one consecutive 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
,可以代替使用:
na.approx
is based on the base
function approx
, which may be used instead:
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
这篇关于用R中的上一行和下一行替换NA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文