使用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
中存在解决方案,那么它将在整个项目中流动。谢谢你的帮助!