0

我希望我在 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 中,然后将第 2 列的观察值的平均值输入到第二列的 NA 中,并且很快。

4

2 回答 2

1

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

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

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

于 2013-09-25T05:14:12.347 回答
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)
于 2013-09-25T05:35:45.960 回答