【问题标题】:Applying cumsum to binary vector将 cumsum 应用于二进制向量
【发布时间】:2012-07-18 08:17:39
【问题描述】:

我有一个简单的二进制向量 a,我尝试使用 R 函数 cumsum 将其转换为向量 b。但是,cumsum 并不完全返回向量 b

这是一个例子:

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

b <- c(1,2,2,2,3,4,5,6,7,7,8,9,9,9,10,11)

> cumsum(a)
[1] 1 1 1 1 2 3 4 5 5 5 6 6 6 6 7 8

问题在于,每当向量a 中出现 0 时,前一个数字就应该增加 1,但仅限于第一个 0。其余的被赋予相同的值。

任何建议都会很棒! :-)

【问题讨论】:

    标签: r binary-data cumulative-sum


    【解决方案1】:

    诀窍是使用diff 标记过渡:

    cumsum(as.logical(a+c(0,abs(diff(a)))))
     [1]  1  2  2  2  3  4  5  6  7  7  8  9  9  9 10 11
    

    【讨论】:

    • 不确定我是否能做到这一点;p 但非常感谢代码的和平! :-)
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多