我有问题。例如,我有这个:
id truth count
1 1 1
2 1 2
3 0 0
4 1 1
5 1 2
6 1 3
8 0 0
我试过了:
fun <- rle(df$truth)
df$count <- unlist(sapply(fun$lengths, function(x) {return(1:x)}))
但它没有用。
答案 0 :(得分:6)
这是一种方法。基于ave
:
transform(dat, count = truth * ave(truth, c(0L, cumsum(diff(truth) != 0)),
FUN = seq_along))
其中dat
是数据框的名称。