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
>
我想根据给定的截断(或中断)将向量拆分到 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
>