通过矩阵的列查找满足某些标准的值的百分比

时间:2012-10-31 14:09:49

标签: r

我创建了一个8 x 1000的Exp()变量矩阵。这表示从指数分布中抽样8次的1000次迭代(列)。我试图弄清楚如何获得每列中小于临界值的值的百分比。所以我最终得到1000%的向量。我已经尝试了几件事,但对R来说仍然相对较新,我遇到了一些困难。

这是我目前的代码版本,但不太适用。当我想要样本的均值或方差时,我已经使用了apply函数(没有for循环),所以我一直在尝试这种方法,但这个百分比似乎需要不同的东西。有什么想法吗?

 m=1000
 n=8
 theta=4
 crit=3
 x=rexp(m*n,1/theta)

 Mxs=matrix(x,nrow=n)

 ltcrit=matrix(nrow=m,ncol=1)

 for(i in 1:m){
    lt3=apply(Mxs,2,length(which(Mxs[,i]<crit)/n))
    }

 ltcrit

2 个答案:

答案 0 :(得分:3)

您可以在没有任何for循环的情况下使用apply并获得答案:

percentages = apply(Mxs, 2, function(column) mean(column < crit))

请注意使用function(column) mean(column < crit)创建匿名函数。您可能在需要列的方法时使用apply(Mxs, 2, mean),或者在需要列的方差时使用apply(Mxs, 2, var),但请注意您可以将任何所需的函数放入该空间并执行它在每一栏上。

另请注意,mean(column < crit)是让column中的值百分比小于crit的好方法。

答案 1 :(得分:2)

您可以使用colMeans

colMeans(Mxs<crit)
[1] 0.500 0.750 0.250 0.375 0.375 0.875 ...