在R语言中依据阈值区间为数据框添加分桶列
基于阈值区间为数据框添加分桶列
我有如下阈值区间网格grd:
> grd count treshold 1 1 0.01 2 2 0.02 3 3 0.05 4 4 0.10 5 5 0.20
以及数据框df:
> df param name 1 0.124 Tim 2 0.011 John 3 0.002 Alex 4 0.023 Jessica 5 0.056 Rose
需要用grd$treshold为df新增一列bucket,标识df$param中数值所属的区间:
- 0.124大于0.10,对应分桶编号5
- 0.011介于0.01和0.02之间,对应分桶编号2
- 以此类推,最终预期结果如下:
> df param name bucket 1 0.124 Tim 5 2 0.011 John 2 3 0.002 Alex 1 4 0.023 Jessica 3 5 0.056 Rose 4
解决方案
使用R内置的findInterval()函数即可快速实现需求,该函数会返回每个数值在阈值序列中的位置索引,恰好对应grd$count的分桶编号:
# 为df添加分桶列 df$bucket <- findInterval(df$param, grd$treshold, rightmost.closed = TRUE) # 查看结果 df
运行上述代码后,就能得到符合预期的分桶结果。
内容的提问来源于stack exchange,提问作者fredi96
相关产品推荐
相关产品推荐

