Aggregate multiple rows of the same data.frame in R based on common values in given columns
aggregate, dataframe, r
Solution
aggregate(value ~ item + size + weight, FUN = mean, data=df)
item size weight value
1 B 1 2 3
2 C 3 2 1
3 A 2 3 5
Problem
I have a `data.frame` that looks like this: ``` # set example data df <- read.table(textConnection("item\tsize\tweight\tvalue A\t2\t3\t4 A\t2\t3\t6 B\t1\t2\t3 C\t3\t2\t1 B\t1\t2\t4 B\t1\t2\t2"), header = TRUE) # print example data df ``` ``` item size weight value 1 A 2 3 4 2 A 2 3 6 3 B 1 2 3 4 C 3 2 1 5 B 1 2 4 6 B 1 2 2 ``` As you can see the `size` and `weight` columns do not add any complexity since they are the same for each `item`. However, there can be multiple `value`s for the same `item`. I want to collapse the data.frame to have one row per `item` using the mean `value`: ``` item size weight value 1 A 2 3 5 3 B 1 2 3 4 C 3 2 1 ``` I guess I have to use the `aggregate` function but I could not figure out how exactly I can get the above result.