计算从0到1的过渡次数以及首先出现1的索引

时间:2020-06-18 08:53:20

标签: r dplyr

我有以下数据:

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]

2 个答案:

答案 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