创建新列并将值从上一组结转到下一组

Sau*_*abh 5 group-by r lag

我正在努力将上一组的价值转移到下一组。我尝试使用它来解决它rleid,但无法获得所需的结果。

df <- data.frame(signal = c(1,1,5,5,5,2,3,3,3,4,4,5,5,5,5,6,7,7,8,9,9,9,10), 
                 desired_outcome = c(NA, NA, 1, 1, 1, 5, 2, 2, 2, 3, 3, 4, 4,4,4,5,6,6,7,8,8,8,9))

# outcome column has the expected result -
   signal desired_outcome
1       1              NA
2       1              NA
3       5               1
4       5               1
5       5               1
6       2               5
7       3               2
8       3               2
9       3               2
10      4               3
11      4               3
12      5               4
13      5               4
14      5               4
15      5               4
16      6               5
17      7               6
18      7               6
19      8               7
20      9               8
21      9               8
22      9               8
23     10               9
Run Code Online (Sandbox Code Playgroud)

d.b*_*d.b 4

rle将给出出现相同值的序列的lengths和。values然后:删除最后一个值,将剩余的移动values一个,NA在值的开头添加一个以考虑删除最后一个值,并重复由下式给出的每个值lengths(即lengths原始向量中相同值的序列)。

with(rle(df$signal), rep(c(NA, head(values, -1)), lengths))
# [1] NA NA  1  1  1  5  2  2  2  3  3  4  4  4  4  5  6  6  7  8  8  8  9
Run Code Online (Sandbox Code Playgroud)