保証された数のレベルが返されるカットをしたいと思います。したがって、累積パーセンテージの任意のベクトルを取得し、十分位数にカットしたいと思います。私はカットを使用してみましたが、ほとんどの状況でうまく機能しますが、パーセンテージが大きい十分位数がある場合、必要な数の一意のカット (10) を返すことができません。のカット数は 10 であることが保証されていますか?
含まれている例では、十分位数 7 の発生はありません。
> (x <- c(0.04,0.1,0.22,0.24,0.26,0.3,0.35,0.52,0.62,0.66,0.68,0.69,0.76,0.82,1.41,6.19,9.05,18.34,19.85,20.5,20.96,31.85,34.33,36.05,36.32,43.56,44.19,53.33,58.03,72.46,73.4,77.71,78.81,79.88,84.31,90.07,92.69,99.14,99.95))
[1] 0.04 0.10 0.22 0.24 0.26 0.30 0.35 0.52 0.62 0.66 0.68 0.69 0.76 0.82 1.41 6.19 9.05 18.34 19.85 20.50 20.96 31.85 34.33
[24] 36.05 36.32 43.56 44.19 53.33 58.03 72.46 73.40 77.71 78.81 79.88 84.31 90.07 92.69 99.14 99.95
> (cut(x,seq(0,max(x),max(x)/10),labels=FALSE))
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 3 4 4 4 4 5 5 6 6 8 8 8 8 8 9 10 10 10 10
> (as.integer(cut2(x,seq(0,max(x),max(x)/10))))
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 3 4 4 4 4 5 5 6 6 8 8 8 8 8 9 10 10 10 10
> (findInterval(x,seq(0,max(x),max(x)/10),rightmost.closed=TRUE,all.inside=TRUE))
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 3 4 4 4 4 5 5 6 6 8 8 8 8 8 9 10 10 10 10
ほぼ同じサイズの間隔を 10 個取得したいのですが、10 個を確実に取得できるようにサイズ設定されています。cut et al は、この例で 9 個のビンを提供しています。10 個が必要です。したがって、それを認識するアルゴリズムを探しています。 [58.03,72.46],73.4 の間の切れ目は大きいです。ビン 6、8、8 に割り当てる代わりに、これらのケースをビン 6、7、8 に割り当てます。