sは大きな配列であり、テーブルをデータベースに保存するだけです
> table_s
s
1 2 3 4 5
3000000 1 1 999999999999999999 34
Rのtable_sで分位数を計算する方法は?
ありがとう
重みを許可するHmiscパッケージの分位関数を使用できます。
Hmisc::wtd.quantile(as.numeric(names(table_s)),weights = table_s)
私が考えることができる最も簡単な(しかし計算コストの高い)方法は、テーブルを観測値のベクトルに再展開し、次の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)未満の場合にのみ実行されます。