在R中查找数据帧中的序列

在R中查找数据帧中的序列,r,dataframe,sequence,R,Dataframe,Sequence,这是一个假设的数据帧: a <- c(1:10) b <- sample(seq(from = 0, to = 1, by =1), size = 10, replace = TRUE) data <- data.frame(a,b) 我想创建一个新的列(c),计算b值在当前a值a之前重复了多少次: a b c 1 1 1 0 2 2 1 1 3 3 0 0 4 4 0 1

这是一个假设的数据帧:

a <- c(1:10)                   
b <- sample(seq(from = 0, to = 1, by =1), size = 10, replace = TRUE)                   
data <- data.frame(a,b) 
我想创建一个新的列(c),计算b值在当前a值a之前重复了多少次:

    a b c
1   1 1 0
2   2 1 1
3   3 0 0
4   4 0 1
5   5 1 0
6   6 1 1
7   7 1 2
8   8 1 3
9   9 1 4
10 10 0 0
我认为它可能需要一个if命令,它的意思是:if b==shift(b)而不是c=+1,else:0,但我对r相当陌生,所以我不太确定如何实现这样一个过程。任何帮助都将不胜感激

编辑:致力于解决方案:

data <- data.table(data)
data[, c := b + shift(b)]  

数据如果您不专注于使用
数据表
,您可以看看
rle

set.seed(123)

a <- c(1:10)
b <- sample(seq(from = 0, to = 1, by =1), size = 10, replace = TRUE)
data <- data.frame(a,b)

len <- rle(data$b)$lengths
data$c <- unlist(sapply(len, function(x) seq.int(1,x)))-1
set.seed(123)

a <- c(1:10)
b <- sample(seq(from = 0, to = 1, by =1), size = 10, replace = TRUE)
data <- data.frame(a,b)

len <- rle(data$b)$lengths
data$c <- unlist(sapply(len, function(x) seq.int(1,x)))-1
# > data
#     a b c
# 1   1 0 0
# 2   2 1 0
# 3   3 0 0
# 4   4 1 0
# 5   5 1 1
# 6   6 0 0
# 7   7 1 0
# 8   8 1 1
# 9   9 1 2
# 10 10 0 0