R中具有多个条件的不同时间窗的累积和

时间:2018-10-24 17:15:22

标签: r dplyr sum cumsum rollapply

我希望在非常大的数据帧条件下计算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)

不幸的是,我仍然不知道如何包括我的条件,因此将不胜感激。

0 个答案:

没有答案