我想统计有连续观察符合条件的次数。例如。在下面的foo
中,我想统计三月月份中y
的连续值小于该月y
平均值的一个标准偏差的天数。我的数据布局像foo
:
library(lubridate)
foo <- data.frame(x=seq.Date(as.Date("1981/1/1"),
as.Date("2000/12/31"), "day"))
foo$y <- arima.sim(n = nrow(foo), list(ar = c(0.8)))
我已经弄清楚了如何计算每年y
低于均值一个标准差的每年三月的天数:
bar <- foo %>% filter(month(x) == 3 & y < mean(y)-sd(y)) %>%
group_by(year(x)) %>% tally()
我希望仅当满足条件的日期连续时才使用此计数。例如,如果3月的平均温度为0且标准差为1,1990年的3月5日,6和7均低于-1,则1990年的计数为3。如果3月21日的平均值也<-1但是3月20日和22日的值都不是<-1,则计数仍然是3,因为3月21日没有邻居的值也<-1。
我想象rle
会发挥作用,但我不知道该怎么做。
任何建议表示赞赏。