用平均值替换NA-s

时间:2014-10-24 18:55:04

标签: r

我有一个缺少值的数据框。如何用上一行和下一行的平均值替换NA-s?在(30 + 10)/ 2 = 20的示例中。

id    value
1     30
2     NA
3     10
4     20

1 个答案:

答案 0 :(得分:5)

尝试

library(zoo)
na.approx(df$value)
#[1] 30 20 10 20

假设data的第一行或最后一行是NA值还是连续的NA(在帖子中不清楚),函数将返回

 na.approx(df1$value, na.rm=FALSE)
 #[1] NA 20 25 24 23 22 27 28 29 NA

数据

df <- structure(list(id = 1:4, value = c(30L, NA, 10L, 20L)), .Names = c("id", 
  "value"), class = "data.frame", row.names = c(NA, -4L))

df1 <- data.frame(id=1:10, value=c(NA, 20,25, NA, NA, 22, 27, 28, 29, NA))