Я хочу вычислить кумулятивные суммы временных окон на 3 и 7 дней с условиями для очень большого фрейма данных.
Это пример моего фрейма данных:
Date X
1.1.18 0
2.1.18 0
3.1.18 0
4.1.18 NA
5.1.18 0.3
6.1.18 NA
7.1.18 0
8.1.18 NA
9.1.18 NA
10.1.18 NA
11.1.18 0
12.1.18 0.9
13.1.18 0.2
14.1.18 0.2
15.1.18 NA
16.1.18 0.3
Совокупные суммы должны рассчитываться на основе столбца X.Условия:
(1) Если все значения X временного окна равны NA -> CumSum должен быть равен NA.
(2) Если все значения X временного окнаравны 0 -> CumSum должно быть 0.
(3) Если значения X временного окна равны 0 или NA -> CumSum должно быть NA.
(4)Если все значения X временного окна> 0 ->, значения должны быть суммированы.
(5) Если все значения X временного окна либо> 0, либо NA ->, значения должны бытьсуммировано.
(6) Если все значения Х временного окна равны> 0 или 0 -> значения должны быть суммированы.
Результат должен выглядеть следующим образом:
Date X 3CumSumX 7CumSumX
1.1.18 0 NA NA
2.1.18 0 NA NA
3.1.18 0 NA NA
4.1.18 NA 0 NA
5.1.18 0.3 NA NA
6.1.18 NA 0.3 NA
7.1.18 0 0.3 NA
8.1.18 NA 0.3 0.3
9.1.18 NA NA 0.3
10.1.18 NA NA 0.3
11.1.18 0 NA 0.3
12.1.18 0.9 NA 0.3
13.1.18 0.2 0.9 0.9
14.1.18 0.2 1.1 1.1
15.1.18 NA 1.3 1.3
16.1.18 0.3 0.4 1.3
Пока у меня есть следующий код, но условия (1) и (3) здесь не выполняются:
data$`3CumSumX` <- NA # column for 3 days cumulative values
data$`7CumSumX` <- NA # column for 7 days cumulative values
data[17,] <- NA # additional row for cumulative values
data[4:17,3] <- rollapply(data[1:16,2], width=3, FUN=sum, na.rm=TRUE)
data[8:17,4] <- rollapply(data[1:16,2], width=7, FUN=sum, na.rm=TRUE)
К сожалению, я до сих пор не знаю, как включитьмои условия, поэтому любая помощь будет оценена.