> dt = data.table(A = rep(c('x','y'), each = 3), B = 1:6)
> dt
A B
1: x 1
2: x 2
3: x 3
4: y 4
5: y 5
6: y 6
Run Code Online (Sandbox Code Playgroud)
我想将 A 中每个组的数据分箱,即所需的输出应如下所示
A B desired
1: x 1 [1,2]
2: x 2 [1,2]
3: x 3 (2,3]
4: y 4 [4,5]
5: y 5 [4,5]
6: y 6 (5,6]
Run Code Online (Sandbox Code Playgroud)
但
> dt[, C := cut(B, 2, include.lowest = TRUE), by = A]
> dt
A B C
1: x 1 [4,5]
2: x 2 [4,5]
3: x 3 (5,6]
4: y 4 [4,5]
5: y 5 [4,5]
6: y 6 (5,6]
Run Code Online (Sandbox Code Playgroud)
正确的方法是什么?