【发布时间】:2018-11-07 04:18:03
【问题描述】:
我有一个这样的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
有没有人有一个很好的解决方案来解决这个问题?
【问题讨论】:
标签: r performance data.table data-manipulation