Минимальное вращение с фиксированным окном - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужна помощь в расчете совокупного минимума в скользящем окне фиксированной длины.У меня есть переменная в наборе данных, и я хотел бы создать новую переменную, которая просматривает каждое из трех последних наблюдений в моей переменной и выводит минимум.

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 голосов
/ 12 февраля 2019

Если вас не волнует скорость и вы не против подхода 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.

Но это просто для любопытства, возможно, вам лучше использовать zoo, как уже предлагал @markus.

Однако функции прокрутки во всех пакетах обычно работают со ссылками на строки, и, если между ними имеются пробелы (например, пробелы между датами), вы можете воспользоваться sapply.

...