我有一个浮点算术问题,使我无法正确计算data.table列中值的出现。一个例子:
> i = 0.1
> i = i + 0.05
>
> value = c(i, 0.15, 0.2, 0.2, 0.3)
> dt = data.table(value)
> dt[, .(.N), by = .(value)]
value N
1: 0.15 1
2: 0.15 1
3: 0.20 2
4: 0.30 1
如您所见:
> i == 0.15
[1] FALSE
我是否可以通过一种简单的解决方法来获得以下结果? I和0.15是一系列操作的结果。与其尝试在流程中尽早解决问题,不如通过计数来了解小组是否可以解决该问题。
> dt[, .(.N), by = .(value)]
value N
1: 0.15 2
2: 0.20 2
3: 0.30 1
答案 0 :(得分:0)
@Roland提供了答案。我只需要在round
语句中by
:dt[, .(.N), by = .(round(value, 16))]