R:将数字分组到箱子中

时间:2015-07-30 16:43:41

标签: r grouping

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

实施例
DistrDF

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

然后我有一个数组,比方说,0和1之间的10个随机数(即每个随机数将落入DistrDF中的一个二进制位)

RandNums
0.13
0.50
0.11
0.10
0.70
0.05
0.12
0.80
0.88
0.40

我想使用这两个表来创建第三个表,它表示每个随机数落入哪个bin,如下所示:

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)

有没有人有任何想法?我觉得aggregate或某些东西可能是有序的,但我不确定。

1 个答案:

答案 0 :(得分:1)

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

您可以操纵include.lowestright参数来更改处理垃圾箱边框上的点的方式。