R:将数字分组到存储箱中

R:将数字分组到存储箱中,r,grouping,R,Grouping,我希望在数据帧中的列中找到最小的数字,该数字比另一个数组中的数字大 示例 分发 Bin Freq CumSum 0.1 0.05 0.05 0.2 0.07 0.12 0.3 0.20 0.32 0.4 0.10 0.42 0.5 0.00 0.42 0.6 0.15 0.57 0.7 0.00 0.57 0.8 0.30 0.87 0.9 0.11 0.98 1.0 0.02 1.0 然后我有一个数组,比如说,10个介于0和1之间的随机数(也就是

我希望在数据帧中的列中找到最小的数字,该数字比另一个数组中的数字大

示例
分发

Bin Freq CumSum  
0.1 0.05 0.05  
0.2 0.07 0.12    
0.3 0.20 0.32  
0.4 0.10 0.42  
0.5 0.00 0.42   
0.6 0.15 0.57  
0.7 0.00 0.57  
0.8 0.30 0.87  
0.9 0.11 0.98  
1.0 0.02 1.0
然后我有一个数组,比如说,10个介于0和1之间的随机数(也就是说,每个随机数将落入DistrictF中的一个容器中)

我想使用这两个表来创建第三个表,该表指示每个随机数落在哪个箱子中,如下所示:

ResultDF  
0.30 (because 0.13 < 0.32 and 0.13 > 0.12)
0.60 (because 0.50 < 0.57 and 0.50 > 0.42)
...
0.30 (because 0.40 < 0.42 and 0.40 > 0.32)
ResultDF
0.30(因为0.13<0.32和0.13>0.12)
0.60(因为0.50<0.57和0.50>0.42)
...
0.30(因为0.40<0.42和0.40>0.32)

有人有什么想法吗?我感觉像是一个
aggregate
或是什么东西,但我不确定。

函数
cut
可以满足您的需要:

DistrDF <- DistrDF[DistrDF$Freq > 0,]  # Remove empty bins
DistrDF$Bin[cut(x$RandNums, c(0, DistrDF$CumSum))]
# [1] 0.3 0.6 0.2 0.2 0.8 0.1 0.2 0.8 0.9 0.4
Distridf 0,]#移除空箱子
Distridf$Bin[切割(x$RandNums,c(0,Distridf$CumSum))]
# [1] 0.3 0.6 0.2 0.2 0.8 0.1 0.2 0.8 0.9 0.4

您可以操纵
include.lower
right
参数来更改您处理落在垃圾箱边界上的点的方式。

感谢您的回复。我在执行解决方案时遇到了困难,因为我不断遇到“中断不是唯一的”错误。知道是什么引起的吗?再次感谢!没关系,我错过了你删除空箱子的第一行。虽然我不明白为什么一个空箱子会导致它失败?再次感谢!
DistrDF <- DistrDF[DistrDF$Freq > 0,]  # Remove empty bins
DistrDF$Bin[cut(x$RandNums, c(0, DistrDF$CumSum))]
# [1] 0.3 0.6 0.2 0.2 0.8 0.1 0.2 0.8 0.9 0.4