如何在 r 中对 data.frame 的元素进行操作,从而创建一个新列?

How can I operate on elements of a data.frame in r, that creates a new column?

假设我有一个 data.frame, df.

a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1

我想对其进行运算,以便对于所有 a 和 b 相等的地方,我计算 d 的平均值。

我发现使用聚合可以做到这一点, 聚合(d ~ a + b,df,均值) 这给了我一些合理的东西

a b d
1 2 5
2 1 3
2 3 6

但理想情况下,我想保留原来的 d 列,并添加一个新的 m 列,这样我就可以得到原始的 data.frame 和一个包含平均值的新列 "m",例如,

a b d m
1 2 4 5
1 2 5 5
1 2 6 5
2 1 5 3
2 3 6 6
2 1 1 3

关于如何在 R 中执行此操作的任何想法 "properly"?

library(dplyr)

df <- read.table(text = "a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1
" , header = T)


df %>% 
  group_by(a , b)  %>%
  mutate(m = mean(d))