2017-05-31 47 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)))