提取行程長度編碼對於那些滿足您的是標準條目> 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
這是一個很好的! –