3

I am trying to compute an additional column in my dataframe that contains some summary data (mean, min, max). Starting from this dataframe

Group    Value
A        15       
A        5        
B        4        
B        2       
C        25      
C        15      

I would like to calculate means for every group:

Group    Mean
A        10
B        3
C        20

But i would like to add a column to the original dataframe repeating the value for every row of the same group, like this:

Group    Value    Mean
A        15       10
A        5        10
B        4        3
B        2        3
C        25       20
C        15       20

I managed to obtain this result using aggregate first (to create a temporary dataframe) and than merge the original dataframe with the temporary one using "Group" as merging variable.

I am sure there is an easier and faster way to do this. Of note, i would like to be able to do this with the base functions (e.g. no dplyr, reshape, etc) if possible. Thank you!

fzara
  • 107
  • 7

1 Answers1

1

In base R, this can be easily done with ave

df$Mean <- with(df, ave(Value, Group))
df
#   Group Value Mean
#1     A    15   10
#2     A     5   10
#3     B     4    3
#4     B     2    3
#5     C    25   20
#6     C    15   20
akrun
  • 874,273
  • 37
  • 540
  • 662