我有以下数据:
x <- c(1,1,1,1,1,0,0,0,1,1,1)
我想测量从0到1的过渡次数。 因此,在上面的示例中,该值应为1。
此外,我想找到第一次出现1的索引。 所以应该是[1,9]
在此示例中:
x <- c(1,1,1,1,1,0,0,0,1,1,1,0,0,0)
它应该仍然是1,因为只有一次我们从0过渡到1。 索引应为[1,9]
最后一个:
x <- c(1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1)
应该算2。 索引应为[1、9、15]
答案 0 :(得分:3)
对于第一部分,您可以执行以下操作:
sum(diff(x) == 1)
[1] 2
第二部分:
c(which.max(x == 1), which(diff(x) == 1) + 1)
[1] 1 9 15
答案 1 :(得分:1)
0到1之间的过渡次数:
x <- c(1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1)
sum(head(x, -1) == 0 & tail(x, -1) == 1)
#[1] 2
第一次出现1的索引
with(rle(x), cumsum(lengths)[values == 1] - lengths[values == 1] + 1)
#[1] 1 9 15