提取行程长度编码对于那些满足您的是标准条目> 1:
foo <- rle(dataset>1)
现在我们需要来标记不同的运行。我们标签值< = 1的运行为“0”和所有那些> 1,通过增加整数:
foo$values <- as.numeric(foo$values)
foo$values[foo$values>0] <- 1:sum(foo$values[foo$values>0])
我们现在backtransform这得到正确的标签。看看index
明白发生了什么:
index <- inverse.rle(foo)
cbind(dataset,index)
我们终于由不同的指标值求和值(并忽略那些指数是0,因为这个总结是< = 1项):
by(dataset,index,sum)[-1]
输出:
> cbind(dataset,index)
dataset index
[1,] 0.5 0
[2,] 1.2 1
[3,] 1.5 1
[4,] 2.1 1
[5,] 2.0 1
[6,] 0.8 0
[7,] 1.4 2
[8,] 0.0 0
[9,] 2.4 3
[10,] 2.9 3
[11,] 2.9 3
[12,] 2.7 3
[13,] 1.4 3
[14,] -0.8 0
[15,] -0.4 0
[16,] -0.2 0
> by(dataset,index,sum)[-1]
index
1 2 3
6.8 1.4 12.3
这是一个很好的! –