如何操作r中data.frame的元素,从而创建新列?

时间:2015-05-20 14:35:17

标签: r merge dataframe aggregate

假设我有一个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?

1 个答案:

答案 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))