我正在寻求帮助,以计算固定长度的滚动窗口内的累积最小值。我在数据集中有一个变量,我想创建一个新变量,该变量查看变量的最后三个观察值,并输出最小值。
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)
答案 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
中受益。