[英]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一起完成?
这就是rollapplyr
的partial=TRUE
参数。 在这里,我们用sum
和sd
和IQR
显示这个。 (注意,一个值的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.