У меня есть набор данных, который выглядит следующим образом:
data <- data.frame( date = rep(c(1:10),5), obs = c(1:50) )
, где в одном столбце у меня есть даты, а в другом столбце у меня есть переменная obs
.Я хотел бы использовать dplyr
для вычисления для каждой строки среднего значения переменной obs
для наблюдения в течение 2 дней со значения date
, исключая текущую строку date
.
Например, для date = 3
в строке 13
Я хочу взять все строки с date
, равными 1, 2, 3, 4 и 5, и взять среднее значение obs
для этих строк, исключая значение obs
в строке 13
.Это даст:
mean(c(1:5, 11, 12, 14, 15, 21:25, 31:35, 41:45))
# 23.41667
, где вы можете видеть, что я взял все наблюдения для дат между 1
и 5
, но я пропустил наблюдение для строки 13
.
В идеале я хотел бы сделать это в любой день: в моем наборе данных нет смежных дат или может быть несколько наблюдений за один и тот же день.Поэтому, если набор данных выглядит следующим образом:
data <- data.frame( date = c(rep(c(1:10),5), 3), obs = c(1:51) )
, где дата 3
повторяется дважды, я хотел бы получить следующее среднее значение для наблюдения в строке 13
:
mean(c(1:5, 11, 12, 14, 15, 51, 21:25, 31:35, 41:45))
# 24.52
и следующее среднее значение для этого в строке 51
:
mean(c(1:5, 11:15, 21:25, 31:35, 41:45))
# 23
По сути, для каждой строки я хотел бы получить среднее значение всех other
наблюдений в столбце obs
, происходящих в пределах 2дни (+ - 2 дня) даты в этой конкретной строке.