How to group by two columns in R

86,410

Solution 1

You apparently are not interested in taking your Character [month] as a Date variable. Considering that I'm not wrong you could simply do something like this:

library(dplyr)

tab %>%
  group_by(month, variable) %>%
  summarise(a_sum=sum(amount),
            a_mean=(mean(amount)))

and get this:

Source: local data frame [3 x 4]
Groups: month

  month variable a_sum a_mean
1 1-Jan        x  4000   2000
2 2-Feb        y  3000   3000
3 2-Feb        z  5000   5000

Solution 2

... or, you can use an alternative sintax:

summarise(group_by(df, variable), sum(amount), mean(amount))

Enjoy.

Share:
86,410
Clayton Samples
Author by

Clayton Samples

Updated on August 17, 2022

Comments

  • Clayton Samples
    Clayton Samples over 1 year

    I have a data frame that I am trying to group and then sum based on two columns. The two columns are characters with one being month and the other variable.

    The following is a sample of the data frame and structure.

    #row.names   month    variable   amount
      1          1-Jan       x        1000
      2          1-Jan       x        3000
      3          2-Feb       z        5000
      4          2-Feb       y        3000 
    

    I tried to group the data first and then I was going to try to summarise, however I am unable to get group_by_() to do the trick. Below is the code I tried.

    byVarMonth <- group_by_(df, variable, (as.date(month)))
    

    Thanks for the help.