将整数间隔拆分为几乎相等长度的区间

时间:2012-09-03 09:24:51

标签: r

假设我有start=1end=12和间隔start:end

我想将其拆分为x=2的分区,以便我获得

的数据框
 start.index end.index
1           1         2
2           3         4
3           5         6
4           7         8
5           9        10
6          11        12

在这种情况下,它会产生6个箱子。 startendx始终为整数

有没有这样做的功能?显然,start%%x!=0当一个箱子可能比其他箱子更大或更小但我不介意。

任何帮助?

1 个答案:

答案 0 :(得分:3)

以下是此类功能的简单示例:

foo <- function(start, end, x = 2) {
    SEQ <- seq(start, end, by = x)
    END <- SEQ + (x - 1)
    take <- END > end
    END[take] <- end
    data.frame(start.index = SEQ, end.index = END)
}

R> foo(1, 12, 2)
  start.index end.index
1           1         2
2           3         4
3           5         6
4           7         8
5           9        10
6          11        12
R> foo(1, 12, 3)
  start.index end.index
1           1         3
2           4         6
3           7         9
4          10        12
R> foo(1, 12, 4)
  start.index end.index
1           1         4
2           5         8
3           9        12

对于奇数个观测值,我们得到最后一个的不同的宽度:

R> foo(1, 11)
  start.index end.index
1           1         2
2           3         4
3           5         6
4           7         8
5           9        10
6          11        11