从R中的零开始按顺序添加值

Ros*_*ose 3 r sum sequence

嗨我正在尝试在向量中添加值,因为R中的值为零.我有一个这样的向量:

wdnew
 [1] 1 0 0 1 1 0 0 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的向量来计算自零值以来的迭代次数或位数.如果我做得恰到好处,我会得到一个这样的矢量:

wdseq
 [1] 1 0 0 1 2 0 0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

这应该是直截了当但我无法弄清楚如何生成序列,任何建议?谢谢,

Psi*_*dom 5

一种选择是用于rleid创建组变量并按cumsum组进行:

wdnew <- c(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1)
ave(wdnew, data.table::rleid(wdnew != 0), FUN=cumsum)
# [1] 1 0 0 1 2 0 0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

  • @Arun原始向量是否只包含1和0还不是很清楚.这是为了处理另一个用户指出的那种情况. (2认同)