我希望在非常大的数据帧条件下计算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)如果时间窗口的所有X值均为> 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)
不幸的是,我仍然不知道如何包括我的条件,因此将不胜感激。