通过排除任何给定数字来计算平均值,中位数

Moh*_*rma 6 r

我有一个大小为5000*5000的矩阵,其中90%的值为0.是否有现成的解决方案可用于计算排除'0'后该矩阵的平均值,中位数?

一个原油解决方案是将所有0改为NA并使用

 median(x, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是手动扫描矩阵并创建另一个包含值的向量,然后计算平均值,中位数等.

还有其他更好的选择吗

vra*_*js5 11

如果您想要整体矩阵的中位数和平均值,请尝试以下方法

median(x[x>0])
mean(x[x>0])
Run Code Online (Sandbox Code Playgroud)

如果你想要中位数和平均值

apply(x,1,function(x){mean(x[x>0])})
apply(x,1,function(x){median(x[x>0])})
Run Code Online (Sandbox Code Playgroud)

如果你想要中位数和意味着明智

apply(x,2,function(x){mean(x[x>0])})
apply(x,2,function(x){median(x[x>0])})
Run Code Online (Sandbox Code Playgroud)