Я пытаюсь добиться следующего, которое выглядит как this question from me, но это не то же самое. Я хотел бы суммировать и означать все значения из одного и того же идентификатора, если дата больше даты в этой строке. Для ряда 3 это будет означать: 61+61+57=179
и строка 4: 61+57=118
и для среднего значения для одних и тех же строк: (61+61+57)/3
, (51+57)/2
Условная сумма data.table в R
или взвешенного среднего по дополнительной колонке.
library(data.table)
set.seed(123)
DT<-data.table(date=rep(c(2015:2020),3),
value=round(runif(18,20,120)),
id=rep(c("a","b","c"),each=6))
DT
date value id
1: 2015 52 a
2: 2016 43 a
3: 2017 34 a
4: 2018 61 a
5: 2019 61 a
6: 2020 57 a
7: 2015 35 b
8: 2016 34 b
9: 2017 43 b
10: 2018 67 b
11: 2019 47 b
12: 2020 106 b
13: 2015 25 c
14: 2016 64 c
15: 2017 100 c
16: 2018 32 c
17: 2019 76 c
18: 2020 41 c
Я попытался это:
DT[,sum_value:=sum(value[date>date[1]]),by=id]
Но это не работает. Буду признателен за любую оказанную помощь.
Повторяются ли повторяющиеся даты в пределах одного идентификатора? – Heroka
Не должно быть дубликатов дат в пределах одного идентификатора. –