Я хотел бы использовать data.table для многократного добавления приращения к начальной точке.
library(data.table)
dat <- data.table(time=seq(from=as.POSIXct("2018-01-01 01:00:01"),to=as.POSIXct("2018-01-01 01:00:10"), by="secs"), int=c(2,3,3,1,10,10,10,10,10,10), x=2*1:10)
> dat
time inc x
1: 2018-01-01 01:00:01 2 2
2: 2018-01-01 01:00:02 3 4
3: 2018-01-01 01:00:03 3 6
4: 2018-01-01 01:00:04 1 8
5: 2018-01-01 01:00:05 10 10
6: 2018-01-01 01:00:06 10 12
7: 2018-01-01 01:00:07 10 14
8: 2018-01-01 01:00:08 10 16
9: 2018-01-01 01:00:09 10 18
10: 2018-01-01 01:00:10 10 20
То есть, начиная со строки 1, я хотел бы добавить значение inc
к time
, получая новое время.Затем мне нужно добавить значение inc
в это новое время, чтобы прийти в третий раз.Тогда результат будет
> res
time inc x
1: 2018-01-01 01:00:00 2 2
2: 2018-01-01 01:00:02 3 6
3: 2018-01-01 01:00:05 10 12
. Я бы, наверное, знал, как сделать это в цикле, но мне интересно, может ли data.table справиться с такими проблемами.
Поскольку значения в time
являются непрерывными, мои идеи заключались в том, чтобы использовать кумулятивные значения inc
для индексации по линиям
index <- dat[...,cumsum(...inc...),...]
dat[index]
, но я не могу получить cumsum()
игнорировать значения между точками интереса.Возможно, это можно сделать в i
части data.table, но я не знаю как.У кого-нибудь есть идея?