需要在每一组的最后一行rollsum结果

问题描述 投票:1回答:1

我使用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栏的最后两个值基础上的。

r zoo
1个回答
1
投票

问题是,na.pad默认情况下FALSE,并且未指定fill参数。因此,它会在开始下降的NAs,这将导致不平衡的长度。将其更改为na.pad = TRUE并应工作

random_dt[, .(group, total, rolling_total = as.numeric(rollsum(total, 3, 
     align = "right", na.pad = TRUE)))]

此外,OP提到有关na.pad过时的警告,从而fill = NA会更合适

© www.soinside.com 2019 - 2024. All rights reserved.