繁体   English   中英

Cumsum但具有最大数据点数

[英]Cumsum but with maximum number of datapoints

我正在寻找创建一个cumsum()TTR::runSum()的混合体,其中cumSum()运行直到预先指定数量的数据点,此时它的行为更像runSum()

例如:

library(TTR)
data <- rep(1:3,2)
cumsum <- cumsum(data)
runSum <- runSum(data, n = 3)
DesiredResult <- ifelse(is.na(runSum),cumsum,runSum)

有没有办法到达DesiredResult,不需要与NAs一起完成?

这就是rollapplyrpartial=TRUE参数。 在这里,我们用sumsdIQR显示这个。 (注意,一个值的sd是NA,我们选择IQR,因为它是可以为标量计算的扩散度量,尽管在这种情况下它总是为0。)

library(zoo)

rollapplyr(data, 3, sum, partial = TRUE)
## [1] 1 3 6 6 6 6

rollapplyr(data, 3, sd, partial = TRUE)
## [1] NA 0.7071068 1.0000000 1.0000000 1.0000000 1.0000000

rollapplyr(data, 3, IQR, partial = TRUE)
## [1] 0.0 0.5 1.0 1.0 1.0 1.0

这有三种选择。

n <- 3

rowSums(embed(c(rep(0, n - 1), data), n)) # base R
# [1] 1 3 6 6 6 6

library(TTR)
runSum(c(rep(0, n - 1), data), n = n)
# [1] NA NA  1  3  6  6  6  6 # na.omit fixes the beginning

library(zoo)
rollsum(c(rep(0, n - 1), data), k = 3, align = "right")
# [1] 1 3 6 6 6 6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM