У меня есть кадр данных с двумя переменными, time
и dif
,
library(lubridate)
a <- data.frame(time=seq(from=as.POSIXct("2019-01-01 01:01:00"),to=as.POSIXct("2019-01-01 01:15:00"),by="min"),dif=make_difftime(mins=c(2,3,5,5,5,2,6,6,6,6,6,6,4,4,4)))
> a
time dif
1 2019-01-01 01:01:00 2 mins
2 2019-01-01 01:02:00 3 mins
3 2019-01-01 01:03:00 5 mins
4 2019-01-01 01:04:00 5 mins
5 2019-01-01 01:05:00 5 mins
6 2019-01-01 01:06:00 2 mins
7 2019-01-01 01:07:00 6 mins
8 2019-01-01 01:08:00 6 mins
9 2019-01-01 01:09:00 6 mins
10 2019-01-01 01:10:00 6 mins
11 2019-01-01 01:11:00 6 mins
12 2019-01-01 01:12:00 6 mins
13 2019-01-01 01:13:00 4 mins
14 2019-01-01 01:14:00 4 mins
15 2019-01-01 01:15:00 4 mins
, и я хотел бы получить последовательность, которая начинается с 01:01:00
, добавляет значение dif
и затем продолжается на 01:01:00 + 2 mins = 01:03:00
, затем добавляет значение dif
и продолжается на 01:03:00 + 5 mins = 01:08:00
и так далее.Таким образом, желаемый результат равен
time dif
1 2019-01-01 01:01:00 2 mins
3 2019-01-01 01:03:00 5 mins
8 2019-01-01 01:08:00 6 mins
14 2019-01-01 01:14:00 4 mins
Я уже задавал подобный вопрос раньше ( итеративное cumum, где sum определяет следующую позицию, которая будет добавлена ), но решения без петель там включают accumulate()
и Reduce()
, которые, кажется, не работают с объектами POSIXct.По крайней мере, они выдают следующую ошибку binary '+' is not defined for "POSIXt" objects
.
Кто-нибудь знает, как это получить?