Я ищу более быстрый способ вычисления среднего значения для группы с несколькими переменными группирования, исключая при этом значения собственной группы. Мысленный эксперимент будет найти среднее значение (например, цену) для округа из округов в том же штате в том же году, исключая стоимость собственного округа. Вот набор игрушечных данных.
df <- data_frame(
state = rep(c("AL", "CA"), each = 6),
county = rep(letters[1:6], each = 2),
year = rep(c(2011:2012), 6),
value = sample.int(100, 12)
)
df %>%
group_by(state, county, year) %>%
summarise(q = mean(df$value[df$state == state & df$county != county & df$year == year]))
# Groups: state, county [6]
state county year q
<chr> <chr> <int> <dbl>
1 AL a 2011 56
2 AL a 2012 46
3 AL b 2011 50.5
4 AL b 2012 52
5 AL c 2011 55.5
6 AL c 2012 29
7 CA d 2011 52.5
8 CA d 2012 32
9 CA e 2011 68.5
10 CA e 2012 31.5
11 CA f 2011 32
12 CA f 2012 42.5
Приведенный выше код дает мне желаемый результат, но когда я применяю его к большему набору данных (с большим количеством переменных группировки), он становится действительно медленным. Есть ли у вас какие-либо предложения о том, как ускорить это?
Если первоначальный подход неверен, укажите это также.