我有一个data.table
这样的
library(data.table)
df = data.table(
id = c(rep(1, 3), rep(2, 4), rep(3, 2)),
time = c(seq(1, 3, 1), seq(1, 4, 1), seq(3, 4)),
value1 = c(0, 0, 0, 0, 2, 0, 0, 0, 1),
value2 = c(0, 1, 0, 1, 0, 0, 0, 0, 1)
)
像这样打印
id time value1 value2
1: 1 1 0 0
2: 1 2 0 1
3: 1 3 0 0
4: 2 1 0 1
5: 2 2 2 0
6: 2 3 0 0
7: 2 4 0 0
8: 3 3 0 0
9: 3 4 1 1
现在我想创建两个新列来跟踪每个值列中最后一个非零值的时间id
。IE。我想要一个结果数据表如下
id time value1 last_change1 value2 last_change2
1: 1 1 0 NA 0 NA
2: 1 2 0 NA 1 0
3: 1 3 0 NA 0 1
4: 2 1 0 NA 1 0
5: 2 2 2 0 0 1
6: 2 3 0 1 0 2
7: 2 4 0 2 0 3
8: 3 3 0 NA 0 NA
9: 3 4 1 0 1 0
有没有人有一个很好的解决方案,表现也很好?