以间歇数字序列计算块大小

时间:2017-04-26 04:03:01

标签: r vector grouping subset sequence

我的R问题是如何从数字向量(或数据框)开始,如:

a <- c(1,2,3,4,5,7,8,12,13,14,16,20)

检查连续序列,检索所有序列,获取它们的长度,最小值和最大值并返回如下内容:

    num  count
  1   1     5
  2   5     5
  3   7     2
  4   8     2
  5  12     3
  6  14     3
  7  16     1
  8  20     1

其中num是每个细分的最小值和最大值,count表示该细分的长度。

分组对整数不起作用,我该怎么办?

1 个答案:

答案 0 :(得分:2)

这样做的一种方法:

chunkstart <- which(c(TRUE, diff(a) > 1))
chunkend <- c(chunkstart[-1] - 1, length(a))
chunksize <- chunkend - chunkstart + 1
data.frame(num = c(rbind(a[chunkstart], a[chunkend])), count = rep(chunksize, each = 2))