0

ベクトルの 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 で問題が発生しました。

どんな助けでも大歓迎です。

4

1 に答える 1

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))
于 2014-11-14T20:56:17.610 に答える