问题描述
我有一个数字范围,例如 1-20000,我有一个窗口大小向量:
lens <- c(100,100,50,20)
我想将范围 1-20000 拆分为窗口,其中窗口长度的分布将类似于向量长度的分布。
有什么想法吗?
谢谢
解决方法
我认为这就是你想要做的。首先,我们需要可重现的数据:
set.seed(42)
x <- sample(20000,200,replace=TRUE)
您想将数据分成与 lens
成正比的组:
brks <- round(c(0,cumsum(lens)/sum(lens) * 20000))
brks
# [1] 0 5405 10811 16216 18919 20000
groups <- cut(x,brks,labels=brks[-1])
table(groups)
# groups
# 5405 10811 16216 18919 20000
# 58 55 55 24 8