time series - R - Difference between two rows depending on condition -


i have time series

ddate=seq(as.posixct("2012/1/1"), as.posixct("2012/1/10"), "day")
ddate
[1] "2012-01-01 pst" "2012-01-02 pst" "2012-01-03 pst" "2012-01-04 pst" "2012-01-05 pst" "2012-01-06 pst" "2012-01-07 pst" "2012-01-08 pst" "2012-01-09 pst" [10] "2012-01-10 pst"

values <- c(f,t,t,t,f,f,t,t,f,f) > dframe <- data.frame(time=ddate,values=values)   > dframe   time values   1  2012-01-01  false    2  2012-01-02   true   3  2012-01-03   true   4  2012-01-04   true    5  2012-01-05  false     6  2012-01-06  false     7  2012-01-07   true     8  2012-01-08   true      9  2012-01-09  false    10 2012-01-10  false 

i want know interval during values true ?

  expected result   starttime          diff(day)   2012-01-02         3   2012-01-07         2  

you can do:

with(dframe, data.frame(starttime = time[diff(c(false, values)) == 1],                          days = with(rle(values), lengths[values]))) 

the nameing little unfortunate. values in lengths[values] not values col, values element of rle object.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -