假设我有一个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,mean) 这给了我一些合理的东西
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?
答案 0 :(得分:1)
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))