2017-05-31 86 views
0

变化我有一个这样的表:[R dplyr,集团通过表可变

Time     Indicator Value 
"2017-05-22 13:52:10" 1   10 
"2017-05-22 13:52:12" 1   11 
"2017-05-22 13:52:14" 1   9 
"2017-05-22 13:52:16" 0   4 
"2017-05-22 13:52:18" 0   10 
"2017-05-22 13:52:20" 1   7 
"2017-05-22 13:52:22" 1   9 
"2017-05-22 13:52:24" 1   7 

而且我想计算三个值:该装置的所有行,其中指示器是恒定的。

所以想通过指示器为三个仓做的基团:第斌与指示符= 1,第二个宾与指示符= 0,并用指示符= 1的第三箱。其基本思路是,我想通过一个变量的变化创造箱。我怎样才能做到这一点?

感谢您的帮助!

+3

一个很好的使用案例'rle',例如'用(RLE(C(1,1 ,1,0,0,1,1,1)),代表(seq_along(值),长度))'到创建组 –

回答

-3

我们可以使用rleiddata.table

library(data.table) 
setDT(df1)[, grp := rleid(Indicator)] 

或者使用dplyr

library(dplyr) 
df1 %>% 
    mutate(grp = cumsum(c(TRUE, diff(Indicator)!=0)))