“cut”的行为不一致:具有相同数量和相同显示切割点的不同间隔

时间:2016-06-18 16:59:57

标签: r formatting binning discretization

我遇到了cut的以下不一致行为,让我头疼:

x <- 0.2316
cut(x, c(0, 0.2315, 10)) #gives 0.232 as cutpoint and choses second interval
## [1] (0.232,10]
## Levels: (0,0.232] (0.232,10]
cut(x, c(0, 0.232, 10)) #choses first interval when taking the same cutpoint it just gave (0.232)
## [1] (0,0.232]
## Levels: (0,0.232] (0.232,10]

问题是cut似乎在格式化(舍入)切割点之前选择了间隔。这导致示例中的不一致行为,即它选择第二个区间但是会根据给定的切割点选择第一个区间(可以在最后一行中看到)。

这对我来说是一个问题,因为我的包中有两个函数:一个是计算切割点,另一个是确定放置新数据点的正确间隔。在上面的示例中,相同的数据点放入第一个函数的第二个区间,但放入第二个函数的第一个区间 - 显示完全相同的切割点!这可能会导致我的包裹出现一些奇怪的行为!

我的问题
这是一个已知的问题?如果有,是否有任何解决方法?谢谢

修改
我知道您可以使用dig.lab更改小数位数但如果您的小数位数更多,则会出现同样的问题。上面的例子只是一个更普遍问题的演示!

1 个答案:

答案 0 :(得分:0)

我刚刚查看了cut.default的源代码,我认为一种解决方法是在调用{{1}之前应用breaks上打印输出上应用的相同格式功能:

cut

然后至少一切都是一致的(所以在这种情况下,在两种情况下都会选择第一个间隔)。

然而,这仅适用于您明确设置切割点的情况!