【发布时间】:2020-02-06 12:16:31
【问题描述】:
我想创建一个列来计算事件连续发生的次数。想象一下抛硬币 100 次,然后计算连续出现的正面(“H”)和故事(“T”)的数量:
结果:
"H","H","H","H","T","T","T","H","T","T",...
计数:
1,2,3,4,1,2,3,1,1,2...
我可以通过以下语法实现这一点:
df$count <- sequence(rle(df$outcome)$lengths) - 0
但是,想象一下,我在 100 次抛硬币中进行了几轮。回合的长度不等,我需要在计数列中将它们分开:
Toss Round Outcome Count
1 1 H 1
2 1 H 2
3 1 H 3
4 1 H 4
5 1 T 1
6 2 T 1
7 2 T 2
8 2 H 1
...
如何在我的代码中的轮次之间实现这种区分(即在结果中计数时按轮次分组)?
编辑:只是想说明这是我需要在 46.000 行数据集中执行的操作的一个非常简化的版本,因此该解决方案不能基于我提供的表,但最好使用 rle-code 或同等代码。
谢谢!
【问题讨论】:
标签: r run-length-encoding