R - 逆序切割

R - Reverse order with cut

我想根据给定的截断(或中断)将向量拆分到 R 中的 bin 中。

这可以按照以下方式完成:

numbers <- 1:10
cutoffs <- c(0,2,6,7,10, Inf)

data.frame(data = numbers, bins = as.integer(cut(numbers, breaks = cutoffs, right = FALSE)))

这将导致以下结果:

   data bins
1     1    1
2     2    2
3     3    2
4     4    2
5     5    2
6     6    3
7     7    4
8     8    4
9     9    4
10   10    5

但是,我想要的是 最低值位于最高 bin 中,反之亦然。所以我想以某种方式实现以下目标:

   data bins
1     1    5
2     2    4
3     3    4
4     4    4
5     5    4
6     6    3
7     7    2
8     8    2
9     9    2
10   10    1

我尝试了很多 'rev()' 的组合来颠倒顺序。但请记住,我不能仅仅反转先前剪切命令的结果,因为它们是不对称的。

我意识到可能有一个简单的解决方案,但出于某种原因它一直在逃避我。我应该朝哪个方向看有什么建议吗?

通过取反数据帧并设置 right=TRUE 的值来更改 cut() 函数的参数,以便间隔变为 (-inf,0)。

达到预期效果。

data.frame(data = numbers, bins = as.integer(cut(-numbers, breaks = -cutoffs, right = TRUE)))

既然您希望左区间边界闭合并且想要一个整数结果,那么 findInterval(而不是 cut)是自然的选择:

data.frame(data = numbers, bins = 6L - findInterval(numbers, vec = cutoffs)) 
   data bins
1     1    5
2     2    4
3     3    4
4     4    4
5     5    4
6     6    3
7     7    2
8     8    2
9     9    2
10   10    1
>