【发布时间】:2013-12-14 20:23:12
【问题描述】:
问题是:我有一个数据集,比如说:
a <- c(0,0,0,0,1,1,1,1,1,1)
我想把它切成均匀的块(例如 5 块)。问题是我不能使用分位数或 cut 因为某些值重复,所以你不能设置不同的断点。
> quantile(a)
0% 25% 50% 75% 100%
0 0 1 1 1
(重复断点)
> cut(a, 5)
[1] (-0.001,0.199] (-0.001,0.199] (-0.001,0.199] (-0.001,0.199] (0.801,1]
[6] (0.801,1] (0.801,1] (0.801,1] (0.801,1] (0.801,1]
Levels: (-0.001,0.199] (0.199,0.4] (0.4,0.6] (0.6,0.801] (0.801,1]
(只使用了两个级别)
我知道我可以生成这样的向量:
b <- c(1,1,2,2,3,3,4,4,5,5)
并将其用于采样。或者我可以使用 for 循环和计数实例。但这需要循环和一些笨拙的编码。我正在寻找一个比这做得更好的简单高效(R 风格)的函数。
(我可以写,但我不想重新发明轮子。)
【问题讨论】: