r - 使用二进制变量创建计数器

标签 r counter

我正在尝试创建一个计数器变量,每当二进制变量发生变化时,该变量都会从 1 开始。

bin <- c(1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0)
df <- as.data.frame(bin)

df <- df %>%
  group_by(bin) %>%
  mutate(cntr = row_number())

我希望得到以下结果:

bin  cntr
1    1
0    1
0    2
1    1
1    2
1    3
...

但我得到的是:

1    1
0    1
0    2
1    2
1    3
1    4

我明白这是为什么......我只是不知道如何获得我想要的结果。任何帮助将不胜感激。

最佳答案

您可以通过组合 sequencerle 轻松实现此目的。无需安装包。

data.frame(bin, cntr = sequence(rle(bin)$lengths))
#   bin cntr
#1    1    1
#2    0    1
#3    0    2
#4    1    1
#5    1    2
#6    1    3
#7    1    4
#8    1    5
#9    0    1
#10   0    2
#11   0    3
#12   0    4
#13   1    1
#14   0    1
#15   1    1
#16   0    1

关于r - 使用二进制变量创建计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57479804/

相关文章:

css - RMarkdown ioslides - 无法更改字体系列

隐藏 div 的 jQuery 计数器

python 3 : TypeError: unhashable type: 'list' when using Counter

r - 使用模式进行 Matlab 字符串操作的 R stringr 替代方案是什么?

r - 错误消息

javascript - 将计数器添加到上一个/下一个图像幻灯片(仅限 javascript/css)?

PHP - 在数据库中存储页面 View 的最佳实践

C# LINQ 获取字典计数

r - R 中的 h2o.predict 错误

r - 向下移动工作目录中的文件夹