据我所知,数据框中的缺失数据(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
答案 0 :(得分:2)
假设OP想要根据该索引的行/列平均值替换NA
元素,我们使用带有which
的{{1}}得到行/列索引(&# 39; IND&#39)。获取&quot; ind&#39;列中的数据集的arr.ind=TRUE
和colMeans
(&#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))
获取outer
和colMeans
的组合,然后根据该值替换NA值。
rowMeans
ind <- is.na(df)
df[ind] <- (outer(rowMeans(df,na.rm=TRUE), colMeans(df,na.rm=TRUE), `+`)/2)[ind]