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
Post a Comment