按行方式替换NA值

Del*_*ine 10 r

我想从以下获取的矩阵中替换我的NA值:

read.table(…)
Run Code Online (Sandbox Code Playgroud)

这些值应该是相应行的平均值.

即,表格的以下行:

1 2 1 NA 2 1 1 2
Run Code Online (Sandbox Code Playgroud)

会成为

1 2 1 1.43 2 1 2
Run Code Online (Sandbox Code Playgroud)

谢谢.

Aar*_*ica 24

这是一些示例数据.

m <- matrix(1:16, nrow=4)
m[c(1,4,6,11,16)] <- NA
Run Code Online (Sandbox Code Playgroud)

而这就是我用行方式填写缺失的方法.

k <- which(is.na(m), arr.ind=TRUE)
m[k] <- rowMeans(m, na.rm=TRUE)[k[,1]]
Run Code Online (Sandbox Code Playgroud)

您的数据将在data.frame; 你必须首先使用转换为矩阵as.matrix.您可能希望也可能不希望以此格式保留它; 转换回使用as.data.frame.


42-*_*42- 5

x[is.na(x)] <- mean(x, na.rm=TRUE)  # for vectors or for a matrix as a whole

t( apply(x, 1, function(xv) { xv[is.na(xv)] <- 
                                    mean(xv, na.rm=TRUE)
                              return(xv)}
          ) ) # for a row-oriented sol'n
Run Code Online (Sandbox Code Playgroud)

  • 这不会返回整个矩阵的平均值吗? (3认同)