I would like to group common values in a column, and obtain sums of the corresponding values in other columns. I have the following data:
df <- data.frame(age = c("40-45", "40-45", "40-45", "40-45"),
                 age.cat = c("35-40", "40-45", "35-40", "40-45"),
                 x = c(21, 170, 36, 96),
                 y = c(47, 110, 121, 394),
                 desc = c("eating", "eating", "running", "running"))
  age  age.cat    x    y     desc
40-45    35-40   21   47   eating
40-45    40-45  170  110   eating
40-45    35-40   36  121  running
40-45    40-45   96  394  running
For every instance that age.cat and age don't match, I'd like to convert age.cat into age and condense that row by summing the values in x and y. So the output will look like:
  age  age.cat    x    y     desc
40-45    40-45  191  157   eating
40-45    40-45  132  515  running
This question is very obviously not a duplicate of this question, since I am also asking to retain the age.cat variable. Notice from the desired output that I am asking to group age and also retain age.cat when age is equal to age.cat.
How do I do this? A tidyverse solution is preferrable, thanks!
 
    