数据:
set.seed (112098)
op <- data.frame(id=1:100,cluster=rbinom(100,1,0.5))
id cluster
1 1
2 1
3 1
4 0
5 1
6 1
7 0
8 0
9 1
拟:
id cluster groups
1 1 1
2 1 1
3 1 1
4 0 0
5 1 2
6 1 2
7 0 0
8 0 0
9 1 3
基本上,每个连续的1
系列组成一个组。如何在R?
答案 0 :(得分:1)
以下是使用rleid
data.table
的一个选项
library(data.table)
setDT(op)[, groups := rleid(cluster)*(cluster)
][groups!=0, groups := as.integer(factor(groups))]
head(op, 9)
# id cluster groups
#1: 1 1 1
#2: 2 1 1
#3: 3 1 1
#4: 4 0 0
#5: 5 0 0
#6: 6 1 2
#7: 7 1 2
#8: 8 0 0
#9: 9 1 3