2

sは大きな配列であり、テーブルをデータベースに保存するだけです

> table_s
s
1       2 3  4                   5
3000000 1 1  999999999999999999  34

Rのtable_sで分位数を計算する方法は?

ありがとう

4

2 に答える 2

3

重みを許可するHmiscパッケージの分位関数を使用できます。

Hmisc::wtd.quantile(as.numeric(names(table_s)),weights = table_s)
于 2012-12-25T04:22:44.793 に答える
0

私が考えることができる最も簡単な(しかし計算コストの高い)方法は、テーブルを観測値のベクトルに再展開し、次のquantile関数を使用することです。

s <- c(3000000,1,1,999999999999999999,34)
names(s) <- 1:5    
quantile(rep.int(as.integer(names(s)),times=s))
#  0%  25%  50%  75% 100% 
#   1    4    4    4    5 

より高速なものを探している場合は、独自の関数を作成する必要があるかもしれません。

編集:Matthew Lundbergがコメントで述べているように、上記のコードは機能しません。sum(s)がベクトルの可能な最大長(現在は2 ^ 31-1 <10 ^ 10)未満の場合にのみ実行されます。

于 2012-12-25T04:20:35.883 に答える