У меня есть 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
.То есть.Я хочу получить итоговую таблицу данных следующим образом
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
У кого-нибудь есть хорошее решение для этого, которое также хорошо работает?