我想使用类似dplyr的 cut_number
之类的东西将列拆分成具有大致相同数量的观察值的桶,其中我的数据集是紧凑形式,其中每行具有权重(观察数) .
示例数据框:
df <- data.frame(
x=c(18,17,18.5,20,20.5,24,24.4,18.3,31,34,39,20,19,34,23),
weight=c(1,10,3,6,19,20,34,66,2,3,1,6,9,15,21)
)
如果每行有一次x观察,我只需使用 df$bucket <- cut_number(df$x,3)
将 x
分段为3个桶,观察次数大致相同 . 但是,我如何考虑每一行用一些观察值加权的事实?我想避免将每一行拆分为 weight
行,因为原始数据帧已经有数百万行 .
2 回答
根据评论,我认为这可能是您正在寻找的区间集 . 对它的一般取消的道歉:
运行此函数会对项目执行如下操作:
对于你的例子:
这是另一种方法,基于我的假设你总共有x1 * weight1 x2 * weight2 .....观察 . 此外,每个“独特”观察只能在一个桶中 . 该方法使用排序和权重的累积总和来创建桶 .