2

多数のサンプルの度数分布の中央値を計算したいと考えています。各サンプルには、いくつかのクラス (この例では 3 つ) とそれぞれの頻度があります。各クラスは異なる値に関連付けられています

data <- data.frame(sample=c(1,2,3,4,5), 
                   freq_class1=c(1,1,59,10,2), 
                   freq_class2=c(1,0,35,44,22), 
                   freq_class3=c(0,4,1,9,2), 
                   value_class1=c(12,11,14,11,13), 
                   value_class2=c(27,33,34,31,29), 
                   value_class3=c(75,78,88,81,65))

たとえば、サンプル 1 の中央値は 19.5 になります。これは、各サンプルの度数分布を使用して実行できると思いますquantile()が、すべての試行が失敗しました。

何か提案はありますか?

4

1 に答える 1

4

これはおそらく最も洗練された方法ではありませんが、機能します。基本的には、data.frame に含まれる情報から完全なデータ ベクトルを再作成し、その中央値を見つけます。それを行う関数を作成するapplyと、data.frame の各行に対してすばやく実行できます。

find.median <- function(x) {
  full.x <- rep(x[5:7],times=x[2:4])
  return(median(full.x))
}

> apply(data,1,find.median)
[1] 19.5 78.0 14.0 31.0 29.0
于 2013-01-22T18:03:52.607 に答える