为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算序列中的运行次数?

/ 猿问

如何计算序列中的运行次数?

红颜莎娜 2019-10-19 15:27:58

在R中,对序列中相同元素的运行进行计数的最有效/最简单的方法是什么?


例如,如何计算非负整数序列中连续零的数量:


x <- c(1,0,0,0,1,0,0,0,0,0,2,0,0) # should give 3,5,2


查看完整描述

3 回答

?
沧海一幻觉

用途rle():


y <- rle(c(1,0,0,0,1,0,0,0,0,0,2,0,0))

y$lengths[y$values==0]


查看完整回答
反对 回复 2019-10-19
?
30秒到达战场

通过使用值在何处更改的索引,可以有效地完成此操作:


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

查找值更改的位置:


diffs <- x[-1L] != x[-length(x)]

获取索引,然后获取后续索引中的差异:


idx <- c(which(diffs), length(x))

diff(c(0, idx))


查看完整回答
反对 回复 2019-10-19
?
白衣非少年

虽然这rle()是回答OP的问题的简便方法,但在某些情况下,此解决方案还有其他优点。特别是,我一直在寻找一种对每个运行进行唯一编号的方法,而不是对运行进行计数,我发现我可以使用来做到这一点c(0,cumsum(x[-1L] != x[-length(x)]))。

查看完整回答
反对 回复 2019-10-19
  • 3 回答
  • 0 关注
  • 88 浏览
我要回答

相关问题推荐

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信