【问题标题】:Replace NA-s with mean values用平均值替换 NA-s
【发布时间】:2014-10-24 18:55:03
【问题描述】:

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

id    value
1     30
2     NA
3     10
4     20

【问题讨论】:

  • 如果第一行或最后一行有 NA 值,你想做什么?如果您有两个(或更多)连续的 NA 值,您想做什么?

标签: r


【解决方案1】:

试试

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 2019-03-06
    • 1970-01-01
    • 2016-03-11
    • 2012-03-08
    • 2020-08-25
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多