2016-08-01 76 views
0

我有1年的每日數據有0和1的值。我想計算每月的事件,使用R的更多天有3個連續的1個值?連續事件計數

set.seed(123) 
abts1 <- sample(0:1, 366, replace=TRUE) 

library(xts) 
d16 <- seq(as.Date("2016-01-01"), as.Date("2016-12-31"), 1) 
ax16 <- as.Date(d16,"%y-%m-%d") 
abts12 <- xts(abts1, ax16) 
# but it gives events for complete period, not as monthly. 
apply.monthly(abts12, function(x) sum(with(rle(c(x!=0)), lengths*values)>=3)) 

回答

0

當我使用xts_0.9-7時,代碼的最後一行會爲我引發一個錯誤。

R> apply.monthly(abts12, function(x) sum(with(rle(x!=0), lengths*values)>=3)) 
Error in rle(x != 0) : 'x' must be a vector of an atomic type 

雖然這很容易解決。您只需要將x != 0換成as.logical即可。

R> apply.monthly(abts12, function(x) sum(with(rle(as.logical(x!=0)), lengths*values)>=3)) 
      [,1] 
2016-01-31 2 
2016-02-29 1 
2016-03-31 3 
2016-04-30 2 
2016-05-31 1 
2016-06-30 2 
2016-07-31 3 
2016-08-31 3 
2016-09-30 2 
2016-10-31 3 
2016-11-30 0 
2016-12-31 2 

這看起來像你期望的輸出。連續3天或更多天的值爲1的次數。