【问题标题】:Cell Mean Imputation单元平均插补
【发布时间】:2013-09-26 00:34:44
【问题描述】:

我希望我在 R 方面做得更好,但我需要一些非常基本的帮助。

我在编写一个执行单元均值插补的函数时遇到了一些问题。我目前正在使用的数据有 3 列,并且我目前编写函数的方式是,第 3 列中观察到的值的平均值被估算到所有 3 列中的所有 NA 中。我怎样才能解决这个问题?谢谢!

cellmean.imp <- function(a){

  for (i in 1:dim(a)[2]){

    new=replace(a, is.na(a), mean(a[, i], na.rm=TRUE))

  }
  return(new)
}

对不起,我忘了补充:我试图将第一列的观测值的平均值输入到第一列的 NA 中,然后将第二列的观察值的平均值输入到第二列中的 NA列,等等。

【问题讨论】:

  • a 是矩阵还是 data.frame?另外,您听起来好像第 3 列起着特殊的作用,而您的代码中却没有:您能澄清一下吗?
  • @flodel - 我认为他们希望将每一列的平均值估算到每个对应列中的NAs 中。比如:apply(x,2,function(x) {x[is.na(x)] &lt;- mean(x,na.rm=TRUE); x} )

标签: r statistics cell mean


【解决方案1】:

如果我理解正确,您想将第三列的平均值放入矩阵中的每个 NA 中

x <- matrix(rnorm(30),10,3)

介绍几个 NA

x[3,1] <- NA
x[4,1] <- NA
x[5,2] <- NA
x[6,3] <- NA

将它们替换为第三列的平均值

x[is.na(x)] <- mean(x[,3],na.rm=TRUE)

【讨论】:

    【解决方案2】:

    ?不知道你到底要什么,但如果你想做的只是插入 NA 值与列的意思,

    x[,3][is.na(x[,3]] <- mean(x[,3], na.rm=TRUE)
    

    应该这样做。 那是你想要的吗?

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2017-05-04
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多