2017-04-26 27 views
2

我ř问题是如何从一个数值矢量(或数据帧)去像:计数块大小在间歇数字序列

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

检查连续序列,检索所有这些,获得它们的长度,最小和max和返回是这样的:

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该段的长度。

分组对整数不起作用,那么我该怎么办?这样做的

回答

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))