最后一次观察向前添加
经过一些搜索和滚动后,第一个问题在这里我仍然卡住了
我有一个应该始终增加的大向量,但它有时会重置为 0。我希望每次重置为 0 时,先前的非 0 值都会添加到以下值中。我试过 LOCF 但它不起作用,因为它只用以前的值填充我的 0 值,然后返回到最低值。
向量示例:
| 数据 | 期望的转变 |
|---|---|
| 0 | 0 |
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 5 | 5 |
| 6 | 6 |
| 0 | 6 |
| 0 | 6 |
| 1 | 7 |
| 2 | 8 |
回答
也许你可以试试cumsum+rle像下面
v <- df$Data
idx <- with(
rle(v == 0),
cumsum(lengths)[values] - 1
)
df$DataOut <- v + cumsum(replace(rep(0, length(v)), idx, v[pmax(1, idx - 1)]))
这使
> df
# A tibble: 11 x 2
Data DataOut
<dbl> <dbl>
1 0 0
2 0 0
3 1 1
4 2 2
5 3 3
6 5 5
7 6 6
8 0 6
9 0 6
10 1 7
11 2 8