R的cut()函数中边界的处理不一致

时间:2015-11-18 21:51:45

标签: r cut bucket

我正在使用R的cut函数来“桶”值,并且我得到了关于如何处理等于间隔边界的值的不一致结果。

例如,当进行默认right = TRUE选择时,存储桶的范围应该包含在右侧。例如,范围(-0.25,-0.20)将包括所有等于-0.20的值,但不包括等于-0.25的值。这似乎并非总是如此,如以下代码和输出:

df = data.frame(First = c(630,615,500,1000),
                Second = c(490,492,450,990)) %>% 
  mutate(Change = Second/First-1)
df %<>% mutate(HistBucket = cut(Change,
                                seq(-0.3,0,by=0.05)))
df

结果:

  First Second     Change   HistBucket
1   630    490 -0.2222222 (-0.25,-0.2]
2   615    492 -0.2000000 (-0.2,-0.15]
3   500    450 -0.1000000 (-0.15,-0.1]
4  1000    990 -0.0100000    (-0.05,0]

第二条记录的确切值为-0.2,但它落入(-0.2,-0.15)区间而不是所需的(-.25,-0.20)区间。第三条记录具有分块值正好-0.1,所以它也落在一个区间的终点上,但它包含在预期的(-0.15,-0.10)区间内。

这似乎是不一致的行为 - 有没有办法绕过这个并让cut函数始终如一地处理区间范围的端点上的值?

0 个答案:

没有答案