我有数字序列(实际上它只是这个序列的一部分。实际上我有超过10万个数字)
1 2 3 3 2 3 2 3 2 1 2 3 2 3 2 3 3 2 3 2 3 2 1 3 3 2 3 3 2 3 3 3 2 3 2 3 2 1 3 2 3 3 3 2 3 3 2 3 2 3
我需要计算在此序列中获得1后的平均步数。 例如: 在该序列中,1是第一个数字。现在我计算得到下一个步骤的步数,然后我得到9.接下来的步骤是经过13个步骤,接下来经过15个步骤等等。
现在我必须计算平均步数。 所以我们有(9 + 13 + 15)/ 3 = 12.(3)
我如何用R语言做到这一点?
答案 0 :(得分:5)
您可以尝试:
mean(diff(which(x == 1)))
## [1] 12.33333
假设:
x <- c(1, 2, 3, 3, 2, 3, 2, 3, 2, 1, 2, 3, 2, 3, 2, 3, 3, 2, 3, 2,
3, 2, 1, 3, 3, 2, 3, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 1, 3, 2, 3,
3, 3, 2, 3, 3, 2, 3, 2, 3)