cut2函数的异常行为:显示左端点值而不是范围

时间:2018-10-02 07:53:10

标签: r binning hmisc

我想对我的数据进行装箱,并考虑使用cut2包中的Hmisc。但是,如果我输入的是精确的左端点值,则不会得到所需的范围,而只有端点:

> library(Hmisc)
> paste(cut2(seq(0,9,1),seq(0,10,1)))
 [1] " 0"      " 1"      " 2"      " 3"      " 4"      " 5"      " 6"      " 7"      " 8"      "[ 9,10]"

通过将值与实际值略有不同(+1e-10)来获得预期的结果:

> paste(cut2(seq(0,9,1)+1e-10,seq(0,10,1)))
 [1] "[ 0, 1)" "[ 1, 2)" "[ 2, 3)" "[ 3, 4)" "[ 4, 5)" "[ 5, 6)" "[ 6, 7)" "[ 7, 8)" "[ 8, 9)" "[ 9,10]"

我正在使用Hmisc软件包中相对较新的版本:

> packageVersion("Hmisc")
[1] ‘4.1.1’

我想使用cut2而不是cut的原因是cut2生成的bin的字母顺序对应于bin的数字顺序:

> sort(paste(cut2(seq(0,19,2)+1e-10,seq(0,20,2))))
 [1] "[ 0, 2)" "[ 2, 4)" "[ 4, 6)" "[ 6, 8)" "[ 8,10)" "[10,12)" "[12,14)" "[14,16)" "[16,18)" "[18,20]"
> sort(paste(cut(seq(0,19,2),seq(0,20,2),include.lowest = TRUE)))
 [1] "(10,12]" "(12,14]" "(14,16]" "(16,18]" "(2,4]"   "(4,6]"   "(6,8]"   "(8,10]"  "[0,2]"   "[0,2]"  

cut2的这种端点行为是错误还是我错过了什么?

0 个答案:

没有答案