gpt4 book ai didi

r - 返回保证数量的 bin 的 cut

转载 作者:行者123 更新时间:2023-12-02 01:16:03 25 4
gpt4 key购买 nike

我想在保证返回的关卡数量的情况下进行剪辑。所以我想采用任何累积百分比向量并分成十分位数。我试过使用 cut 并且它在大多数情况下都运行良好,但是在有很大百分比的十分位数的情况下,它无法返回所需的唯一切割数量,即 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 等人在这个例子中给出了 9 个 bin,我想要 10 个。所以我正在寻找一种算法会认识到 [58.03,72.46],73.4 之间的间隔很大。它将这些案例分配给 bin 6、7、8,而不是分配给 bin 6、8、8。

最佳答案

xx <- cut(x, breaks=quantile(x, (1:10)/10, na.rm=TRUE) )
table(xx)
#------------------------
xx
(0.256,0.58] (0.58,0.718] (0.718,6.76] (6.76,20.5]
4 4 4 4
(20.5,35.7] (35.7,49.7] (49.7,75.1] (75.1,85.5]
3 4 4 4
(85.5,100]
4

关于r - 返回保证数量的 bin 的 cut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com