我使用zoo::rollsum()
获得的观察总和与之前两个吧。然而,目前的结果是显示各一套三顶/最早的行中,但我想它的最后/最新一行。
这是实施例的代码:
library(zoo)
library(data.table)
random_dt <- data.table(group = LETTERS, total = sample(1:10, 26, replace = T))
random_dt <- random_dt[, .(group, total,
rolling_total = as.numeric(rollsum(total, 3, align = "right")))]
我使用align = "right"
,你可以看到,这是我的理解影响了这个。当我使用align = "left"
或align = "center"
,但是没有什么变化。
我也得到一个警告,这有可能是相关的:
警告消息:在as.data.table.list(jval):项目3是大小为24,但最大尺寸为26(再循环,留下的2项的余数)
我理解的信息 - 这样,前两个观察没有足够的以前的意见,创建三个的滚动总和。理想情况下,这些值都将保留为NA什么的。但可能这个问题有助于推了价值,因为它是?这不是明显对我有什么在rolling_total
栏的最后两个值基础上的。
问题是,na.pad
默认情况下FALSE
,并且未指定fill
参数。因此,它会在开始下降的NA
s,这将导致不平衡的长度。将其更改为na.pad = TRUE
并应工作
random_dt[, .(group, total, rolling_total = as.numeric(rollsum(total, 3,
align = "right", na.pad = TRUE)))]
此外,OP提到有关na.pad
过时的警告,从而fill = NA
会更合适