我想要替换通过某种方式获取的矩阵中的NA值:
read.table(…)
那些数值应该是对应行的平均值。
即,表格中的以下一行:
1 2 1 NA 2 1 1 2
会变成什么
1 2 1 1.43 2 1 2
谢谢。
我想要替换通过某种方式获取的矩阵中的NA值:
read.table(…)
那些数值应该是对应行的平均值。
即,表格中的以下一行:
1 2 1 NA 2 1 1 2
会变成什么
1 2 1 1.43 2 1 2
谢谢。
这里是一些示例数据。
m <- matrix(1:16, nrow=4)
m[c(1,4,6,11,16)] <- NA
这是我如何使用行均值填充缺失值的方法。
k <- which(is.na(m), arr.ind=TRUE)
m[k] <- rowMeans(m, na.rm=TRUE)[k[,1]]
你的数据将会处于一个 data.frame
的格式中;你需要先使用 as.matrix
将其转换为矩阵。你可能需要或者不需要保留它的格式;如果要转换回去可以使用 as.data.frame
。
[<-.data.frame
(*tmp*
, k, value = c(3.67857142857143, 3.34375, :
只有逻辑矩阵下标允许替换。 - Delphineas.matrix
),然后进行操作,最后再转换回来(as.data.frame
)。 - Aaron left Stack Overflowx[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
a = c(NA, 1, 2, 3, 10)
a[which(is.na(a)==TRUE)] = mean(a,na.rm = T)
NA
。 - Gavin Simpsonread.table()
返回一个 data.frame。你是在谈论一个数据框还是一个适当的矩阵? - Gavin Simpson