R - 带切割的逆序

时间:2017-06-21 18:12:11

标签: r reverse cut

我想根据给定的截止值(或间隔)将矢量分割成R中的区间。

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

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

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

   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()'的组合来反转序列。但请记住,我不能只是反转早期cut-command的结果,因为它们是不对称的。

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

2 个答案:

答案 0 :(得分:5)

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

达到了预期的效果。

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

答案 1 :(得分:3)

由于您希望左边区间边界关闭并想要整数结果,因此new_table<-set(names, people) (而不是findInterval)是自然选择:

cut