如何分析R中数据集中信号(1和0)的连续持续性?

时间:2014-12-03 20:24:57

标签: r frequency

我们假设我们有一个反映一系列二进制信号的数据集 - " 1"或" 0"在一段时间内。目标是测量1的连续实例,并总计总和。因此,例如,如果连续四次发生1次,则累积信号在第四时间段内将为4。如果下一个周期 - 第五个周期 - 为0,则计数器重置直到/如果1信号返回。我正在寻找一种方法来记录连续1s实例的滚动频率的等价物。我尝试过循环和apply(),但似乎无法找到合适的混音。任何建议将不胜感激。作为测试,让我们创建一些虚假数据。关于如何使用R来解决这个问题的任何想法?谢谢!

 library(xts)
 set.seed(5)
 x <- xts(cbind(sample(0:1,50,replace=T)), order=Sys.Date()-100 + 1:50)

 > head(x)
       [,1]
 2014-08-26    0
 2014-08-27    1
 2014-08-28    1
 2014-08-29    0
 2014-08-30    0
 2014-08-31    1

1 个答案:

答案 0 :(得分:1)

使用ave的另一种方法:

cbind(x, newCol = ave(x, cumsum(c(FALSE, (as.logical(diff(x)))[-1])), 
                      FUN = function(i) seq_along(i) * i))

结果:

           ..1 newCol
2014-08-26   0      0
2014-08-27   1      1
2014-08-28   1      2
2014-08-29   0      0
2014-08-30   0      0
2014-08-31   1      1
2014-09-01   1      2
2014-09-02   1      3
2014-09-03   1      4
2014-09-04   0      0
.
.
.