编写自己的函数,返回向量的第75个百分位数。应用此 函数到矩阵b的所有列。
这里的矩阵b:
b = matrix(runif(1000*18, min=1000, max=10000), 1000, 18)
这是我使用索引创建的功能。
percentileOfAVector <- function(vector,percentile){
adjustedVector=vector[0:floor(percentile * length(vector))]
return (adjustedVector)
}
我想知道我是否可以使用apply函数来调整我得到的b向量。或者我应该使用for循环?
PS:我尝试用for循环来做这个但是当我试图将函数的结果存储在矩阵中时,我遇到了cbind的一些问题。
非常感谢任何帮助。
答案 0 :(得分:0)
如果你想得到一个向量的百分位数(单个值):
apply(b, 2, function (x) quantile(x, prob=0.75))
但似乎这不是你所说的百分位数。如果你想要的是返回一个含有75%以下观察值的向量:
percentOfVector <- function(vector, percentile) {
perc <- quantile(vector, prob=percentile)
vector[which(vector <= perc)]
}
apply(b, 2, function (x) percentOfVector(x, 0.75))