固定窗最小滚动

时间:2019-02-11 22:13:08

标签: r data-manipulation

我正在寻求帮助,以计算固定长度的滚动窗口内的累积最小值。我在数据集中有一个变量,我想创建一个新变量,该变量查看变量的最后三个观察值,并输出最小值。

existing.variable <- c(1, 2, 3, 5, 3, 2, 3)    
desired.target <- c(NA, NA, 1, 2, 3, 2, 2)
dat <- data.frame(existing.variable, desired.target)

1 个答案:

答案 0 :(得分:0)

如果您不关心速度并且不介意使用base方法,则可以执行以下操作:

window_var <- 3

data$desired.target <- c(rep(NA, window_var - 1), 
                         sapply(1:(nrow(data) - window_var + 1), 
                                function(x) min(data$existing.variable[x:(x + window_var - 1)])))

第一部分是设置要应用的窗口,第二部分是构造一个向量,该向量用NA填充第一行,然后使用sapply动态查找最小值。

但这只是出于好奇,也许您最好使用@markus建议的zoo

但是,整个包中的滚动功能通常通过引用行来操作,并且当它们之间存在间隙(例如,日期之间的间隙)时,您可以从sapply中受益。