如何在向量中标记聚簇组?

时间:2016-11-07 02:20:41

标签: r

数据:

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?

中添加组列

1 个答案:

答案 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