1

1と0だけで構成されているxtsオブジェクトがありますが、主にゼロです。2つの1の間の行数(日数ではない)を計算するスマートで効率的な方法があるかどうか疑問に思いました。

オブジェクトがどのように見えるかの一部の例...

                x1
2012-12-13       0
2012-12-14       0
2012-12-17       0
2012-12-18       1
2012-12-19       0
2012-12-20       0
2012-12-21       0
2012-12-24       0
2012-12-26       0
2012-12-27       0
2012-12-28       0
2012-12-31       0
2013-01-02       0
2013-01-03       0
2013-01-04       0
2013-01-07       0
2013-01-08       0
2013-01-09       0
2013-01-10       0
2013-01-11       0
2013-01-14       0
2013-01-15       1
2013-01-16       0
2013-01-17       0
2013-01-18       0
2013-01-22       0
2013-01-23       0
2013-01-24       0
2013-01-25       0
2013-01-28       0
2013-01-29       0

基本的に、2012年12月19日から2013年1月15日までの1と0の横にvector / xtsオブジェクトを配置したいと思います。この例では、2つの1の間に18行あるため、番号は18です。 1と0は、過去にさかのぼります...しかし、基本的には、毎日のvector / xts列の値が、次の1までの行数になることを確認したいと思います。意味がありますか?だからこのようなもの..

                x1   x2
2012-12-13       0   19
2012-12-14       0   19
2012-12-17       0   19
2012-12-18       1   19
2012-12-19       0   18
2012-12-20       0   18
2012-12-21       0   18
2012-12-24       0   18
2012-12-26       0   18
2012-12-27       0   18
2012-12-28       0   18
2012-12-31       0   18
2013-01-02       0   18
2013-01-03       0   18
2013-01-04       0   18
2013-01-07       0   18
2013-01-08       0   18
2013-01-09       0   18
2013-01-10       0   18
2013-01-11       0   18
2013-01-14       0   18
2013-01-15       1   18
2013-01-16       0   20
2013-01-17       0   20
2013-01-18       0   20
2013-01-22       0   20
2013-01-23       0   20
2013-01-24       0   20
2013-01-25       0   20
2013-01-28       0   20
2013-01-29       0   20

等...

4

1 に答える 1

3

これを行う1つの方法は次のとおりです。

object$x2 <- ave(object$x1, cumsum(object$x1), FUN=nrow)

しかし、左側ではなく右側の間隔をグループに含めたいので、これを行う必要があります。

object$x2 <- ave(object$x1, rev(cumsum(rev(object$x1))), FUN=nrow)
于 2013-01-30T12:40:53.450 に答える