“day”< = X时的最后X天的总和

时间:2017-06-01 18:24:31

标签: r dplyr

使用In function "fileTop" In "fileMid 2" at 736847.917401 In "fileMid 4" at 736847.917404 In "fileMid 3" at 736847.917405 In "fileMid 1" at 736847.917409 In "fileMid 5" at 736847.917410 Back in function "fileTop" ,我可以轻松计算一段时间内最后n个值的总和。但是,对于计算字段的前n行,会出现问题。以每天前4天的总和为例:

dplyr::lag

这将创建下表# Load dplyr library(dplyr) # Create data frame day <- 1:7 set.seed(123) value <- round(rnorm(7,20,10)) df <- data.frame(day,value) # Function to sum last i values of column x (using dplyr::lag) rollag <- function(x, i){ lagsum = 0 for(u in 1:i){ lagsum = lagsum + lag(x,u) } lagsum } # Create column for sum of last 4 values of `value` dfm <- mutate(df, Last4 = rollag(value,4))

dfm

如您所见,代码正确计算所有日期的前4个值&gt; 4.我想要的是第2,3,4天为前1,2,3天的总和,以便所有行都填写一个值,除了1(因为在第1天之前没有值)。我可以通过 day value Last4 1 1 14 NA 2 2 18 NA 3 3 36 NA 4 4 21 NA 5 5 21 89 6 6 37 96 7 7 25 115 更新每个值,但会很乏味。

我更喜欢在dfm$Last4[4] = rollag(dfm$value,3)[4]函数中进行任何更改,因为我在整个项目中都使用了这个函数。如果rollag中存在解决方案,那么它将在整个项目中流动。谢谢你的帮助!

0 个答案:

没有答案