使用存储为R中的字符串的间隔映射值的简单方法

我有一个间隔存储为字符串的数据框:

                interval
1       '(-inf-57142.8]'
2    '(57142.8-94002.6]'
3   '(94002.6-130862.4]'
4  '(130862.4-167722.2]'
5    '(167722.2-204582]'
6    '(204582-241441.8]'
7  '(241441.8-278301.6]'
8  '(278301.6-315161.4]'
9  '(315161.4-352021.2]'
10      '(352021.2-inf)'

我想将任何给定的数字映射到间隔“ bins”,使用存储在上面数据框中的间隔并将索引作为bin编号,即

-57142.8将映射到1

-57142.9将映射到2

130862.5将映射到4

352021.2将映射到9

352021.3将映射到10

使用离散函数动态生成间隔。

有没有简单的R工具可以帮助实现这一目标?

还是处理间隔存储为字符串的内容?

预先感谢

iCMS 回答:使用存储为R中的字符串的间隔映射值的简单方法

使用gsub和findInterval解决了此问题,这可能对其他人有用吗?

从上面原始问题中描述的字符串获取边界:

  boundaries<-gsub("\\(-inf-|\\(-inf-|\\(\\d+[.]*\\d+[-]+|\\'|\\]","",intervals$interval)[1:9] %>% as.numeric() 

获取间隔位置:

findInterval(value_to_test,boundaries[1:9],rightmost.closed = FALSE,all.inside = TRUE)

特殊情况下分别处理端点'(-inf-57142.8)'和'(352021.2-inf)',如果value_to_test落在边界上,则其Interval位置也是一种特殊情况,并以-1进行调整。

本文链接:https://www.f2er.com/1529467.html

大家都在问