删除少于三个时期的指标制度

时间:2015-09-02 16:13:46

标签: r loops dummy-variable

我正在寻求以下问题的帮助。

假设我有一个指标变量:

ind <- c(0,1,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1,0)

我的指标变量要长得多,所以这不是一个特定的问题。

我有兴趣编写一个执行以下操作的循环:

如果上面向量中1的连续值小于3,则保持为零。

即。我想删除频繁的政权转移,其中1只是1或2个时期。

因此,最终的载体应如下所示:

ind <- c(0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0)

任何有助于实现这种动态的帮助都将受到赞赏!

尼克

1 个答案:

答案 0 :(得分:2)

我们可以使用rle来执行此操作。我们得到'{1}}'ind',通过将'length'子集化为小于3的值(1 {rle)来更改'values',将相应的'values'分配给0,并使用!!values将输出转换回inverse.rle

vector

或更紧凑的版本

inverse.rle(within.list(rle(ind), values[!!values][lengths[!!values]<3] <- 0))
#[1] 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0