Если мы ищем способ получить mean
элементов, отличных от «Продажи» для определенного «периода», получим разницу «Продажи» с sum
«Продажи» длякаждый «Статья», «Квартал», и разделить на длину группы -1.
library(dplyr)
df %>%
group_by(Article, Quarter) %>%
mutate(average_sales = (sum(Sales)- Sales)/(n()-1))
# A tibble: 18 x 5
# Groups: Article, Quarter [6]
# Article Quarter Period Sales average_sales
# <int> <int> <int> <int> <dbl>
# 1 1 1 1 14 14.5
# 2 1 1 2 10 16.5
# 3 1 1 3 19 12
# 4 1 2 1 19 12
# 5 1 2 2 11 16
# 6 1 2 3 13 15
# 7 2 1 1 12 16.5
# 8 2 1 2 20 12.5
# 9 2 1 3 13 16
#10 2 2 1 17 15
#11 2 2 2 19 14
#12 2 2 3 11 18
#13 3 1 1 11 11.5
#14 3 1 2 12 11
#15 3 1 3 11 11.5
#16 3 2 1 12 16
#17 3 2 2 12 16
#18 3 2 3 20 12
данные
df <- structure(list(Article = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), Quarter = c(1L, 1L, 1L,
2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L),
Period = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L), Sales = c(14L, 10L, 19L, 19L, 11L,
13L, 12L, 20L, 13L, 17L, 19L, 11L, 11L, 12L, 11L, 12L, 12L,
20L)), row.names = c(NA, -18L), class = "data.frame")