我希望找到数据框中列中最小的数字,该数字在另一个数组中的数字较大。
实施例
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
或某些东西可能是有序的,但我不确定。
答案 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.lowest
和right
参数来更改处理垃圾箱边框上的点的方式。