获取之前未包含的数字的cut2间隔

时间:2016-10-10 16:36:57

标签: r quantile

实际上,我已经解决了这个问题,但是我遇到了问题,因为解决方案有两个步骤,它们之间真正分开(第一步是在一个函数内部,第二步是在另一个内部;这意味着我将H作为输出)。

首先,可复制的例子:

RN = rnorm(n=1000,10,20)
H = cut2(RN,g=4,onlycuts=FALSE) # Step 1: The intervals are generated
H2= cut2(RN,g=4,onlycuts=TRUE) # Step 1: (This would be useful if Step 1 and 2 were not separated)
new_number = 10.53 # Step 2: New number
interval_new_number = cut2(new_number,cuts=H) # Step 2: Interval for new number

我想知道一个可以做到的解决方案:

new_number %in% H

给我你的意见。

1 个答案:

答案 0 :(得分:1)

我(认为)该请求用于确定相对于用cut2构造的因子向量的新值的区间数。如果这是需要的,那么在每个因子级别的两个切口中的第一个的gsub构造上使用as.numeric:

H = cut2(RN,g=4,onlycuts=FALSE)
attributes(H)
#----
$class
[1] "factor"

$levels
[1] "[-66.7,-2.4)" "[ -2.4,10.3)" "[ 10.3,23.7)" "[ 23.7,75.9]"

findInterval( 10.53, as.numeric( gsub( "\\[|\\,.+$","", levels(H) ) ) )
[1] 3

我之前从未见过onlycuts参数,但它会使代码更容易,因为不需要as.numeric( gsub(...))次调用:

> (H2 = cut2(RN,g=4,onlycuts=TRUE) )
[1] -66.687208  -2.397688  10.334926  23.659386  75.887076
> findInterval( 10.53, H2 )
[1] 3