根据行和列平均值替换缺失值

时间:2015-11-03 03:49:36

标签: r

据我所知,数据框中的缺失数据(NA)可以用基于行或列的平均值代替。但是我在R中尝试做的事情(但不确定是否可能)是计算缺失单元格的平均值,这些单元格基于缺少值的单元格所在的行和列。我想知道你是否有任何建议。

以下是NA的样本数据:

nr <- 50
mm <- t(matrix(sample(0:4, nr * 15, replace = TRUE), nr))
mm[,c(4,7,12,13)]<-NA
mm[c(3,5,8,9,10,13),]<-NA

1 个答案:

答案 0 :(得分:2)

假设OP想要根据该索引的行/列平均值替换NA元素,我们使用带有which的{​​{1}}得到行/列索引(&# 39; IND&#39)。获取&quot; ind&#39;列中的数据集的arr.ind=TRUEcolMeans(&#39; df&#39;),并将rowMeans元素替换为&#39; c1&#39;的相应元素的平均值和&#39; r1&#39;。

NA

或者@thelatemail建议我们可以使用ind <- which(is.na(df), arr.ind=TRUE) c1 <- colMeans(df[,ind[,2]], na.rm=TRUE) r1 <- rowMeans(df[ind[,1],], na.rm=TRUE) df[ind] <- colMeans(rbind(c1, r1)) 获取outercolMeans的组合,然后根据该值替换NA值。

rowMeans

数据

ind <- is.na(df)
df[ind] <- (outer(rowMeans(df,na.rm=TRUE), colMeans(df,na.rm=TRUE), `+`)/2)[ind]