我有一个缺少值的数据框。如何用上一行和下一行的平均值替换NA-s?在(30 + 10)/ 2 = 20的示例中。
id value
1 30
2 NA
3 10
4 20
答案 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))