我想根据给定的截止值(或间隔)将矢量分割成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的结果,因为它们是不对称的。
我意识到可能有一个简单的解决方案,但由于某种原因,它一直在逃避我。我应该看哪个方向的建议?
答案 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