У меня есть этот набор данных:
test1 <- data.frame(
group = rep(c("X", "Y", "Z"), each = 3),
A = seq(from = 0.15, to = 0.55, by = 0.05),
B = 5:13)
group A B
1 X 0.15 5
2 X 0.20 6
3 X 0.25 7
4 Y 0.30 8
5 Y 0.35 9
6 Y 0.40 10
7 Z 0.45 11
8 Z 0.50 12
9 Z 0.55 13
Я хочу использовать group_by, чтобы получить среднее значение A по группе:
test2 <- test1 %>%
group_by(group) %>%
summarise(avg = mean(A))
group avg
<fct> <dbl>
1 X 0.2
2 Y 0.35
3 Z 0.5
Теперь мой вопрос: есть ли способ разыграть эти агрегированные результаты обратно в исходный фрейм данных без необходимости слияния? То есть в test1 мне нужен столбец со средними значениями по группе. Вот так:
group A B avg
1 X 0.15 5 0.20
2 X 0.20 6 0.20
3 X 0.25 7 0.20
4 Y 0.30 8 0.35
5 Y 0.35 9 0.35
6 Y 0.40 10 0.35
7 Z 0.45 11 0.50
8 Z 0.50 12 0.50
9 Z 0.55 13 0.50
Как уже говорилось, в настоящее время я объединяю эти два кадра данных вместе, но это кажется немного неэффективным?