每组最后一行所需的rollsum结果

每组最后一行所需的rollsum结果,r,zoo,R,Zoo,我正在使用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,

我正在使用
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")))]
图书馆(动物园)
库(数据表)

random_dt问题在于
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
更合适

请检查
?默认情况下的rollsum
na.pad=FALSE
。如果开始时有NA元素,则可以删除。将其更改为
na.pad-TRUE
random_dt[,(组,总计,滚动总计=as.numeric(rollsum(总计,3,align=“right”,na.pad=TRUE))]
感谢您的评论,akrun。
rollsum
的帮助说明
na.pad
已被弃用。我看到了这一点,但并不真正理解na.pad的作用。然而,我现在进一步遵循了这条线索,并使用了
fill=NA
,这给了我前两个值作为NA,同时根据需要向下移动其他值。谢谢如果你把它作为一个答案贴出来,我会接受的。对不起,大卫,我原以为它存在于base R中,但事实证明它来自
zoo
软件包。我包含了data.table信息,因为我不太熟悉data.tables,我认为它可能是相关信息。我已据此对问题进行了编辑。