I have a named vector vec
containing observations for various dates:
vec <- c("20160101"=10,
"20160215"=35,
"20160315"=50,
"20160330"=75,
"20160410"=10,
"20160515"=60,
"20160605"=35,
"20160630"=30,
"20160725"=55,
"20160815"=28,
"20160905"=60,
"20161005"=80,
"20161115"=35,
"20161225"=15)
In a first step I want to know how many runs are below a specified threshold of 45 and have a minimum length of 2:
#threshold
thrs <- 45
#reclass and calculate runs
reclass <- vec
reclass[vec>thrs] <- 1
reclass[vec<=thrs] <- 0
runs <- rle(reclass)
below_thrs <- sum(runs$values[runs$length>=2] == 0)
> below_thrs
[1] 3
Now I want to find the start and end dates of these three runs. Expected output:
1, 20160101, 20160215
2, 20160605, 20160630
3, 20161115, 20161225
Any help is greatly appreciated.