用于确定和计数二进制序列的函数

时间:2018-02-06 18:55:36

标签: r

我正在寻找可以做subj的函数(或包)。 例如,我有一个带有“1”和“0”的二进制序列向量,以“1”开头并在下一个“1”值结束,例如“10”,“10000”,“1000”等。 矢量看起来像这样:

x <- c(1,0,0,1,0,1,0,0,0,1,1,0,0,1,0,0,1)

最后,我需要一个带有值的向量,每个值都代表相应序列的长度:

y <- functionname(x)
y
[1] 3 2 4 1 3 3 1

3 个答案:

答案 0 :(得分:4)

cumsum(x)
[1] 1 1 1 2 2 3 3 3 3 4 5 5 5 6 6 6 7

table(cumsum(x))

# 1 2 3 4 5 6 7 
# 3 2 4 1 3 3 1 

unname(table(cumsum(x)))
# [1] 3 2 4 1 3 3 1

依次获得1,10,100,1000,......的计数。

table(table(cumsum(x)))
# 1 2 3 4 
# 2 1 3 1 

unname(table(table(cumsum(x))))
# 2 1 3 1

答案 1 :(得分:3)

rle(cumsum(x))$length
[1] 3 2 4 1 3 3 1

答案 2 :(得分:2)

tapply(x,cumsum(x),length)
1 2 3 4 5 6 7 
3 2 4 1 3 3 1