Предположим, у вас есть следующий кадр данных:прокатки среднее от фиксированной начальной точки (и группы)
set.seed(100)
Pts <- floor(runif(20, 0, 10))
Individual <- c(rep("Adam",5), rep("Ben",5), rep("Charlie",5), rep("Daisy",5))
Date <- c(rep(seq(as.Date("2015-01-01"), as.Date("2015-01-05"), "days"), 4))
RollMean <- rep(NA,20)
df <- data.frame(Pts, Individual, Date, RollMean)
Я хотел бы, чтобы вычислить, что средние RollMean для КОЗ для каждой строки, отдельными, но включая записи между самой ранней датой и датой в текущей строке.
Например:
df$RollMean[3] = (5+2+3)/3
df$RollMean[4] = (5+2+3+0)/4
df$RollMean[7] = (8+4)/2
Я попытался с помощью таких функций, как SMA()
из TTR
пакета, а затем используя ave
для сортировки группы, такие как:
df$RollMean <- ave(df$Pts, df$Individual, FUN= function(x) SMA(x, n))
, но там я должен предварительно указать n
, который изменяется в зависимости от того, с чем связана строка R.
Какой код я могу использовать для создания Rolling Means, который я ищу?
Большое спасибо, это отлично работает. Если бы я хотел использовать некоторые из более сложных функций скользящего среднего в TTR, таких как EMA() и WMA(), есть ли способ их включения без ручной имитации/разрушения этих вычислений? –