How to use grpstats to sum several variables

Illustration
Baynesy - 2022-04-30T14:22:41+00:00
Question: How to use grpstats to sum several variables

I have a table of historic stock returns that I'm trying to perform some analysis on. The first variable is Stock, the second variable is Industry and 3:374 are the monthly returns.   I am looking to sum the monthly return by industry, i.e. for Materials to have the sum of the Materials stocks, which will result in a matrix/table of industries as variable 1 and the respective monthly summed returns for the other columns.

Expert Answer

Profile picture of John Michell John Michell answered . 2025-11-20

Given the following table, 'TStock', which is arranged as specified in your question:

 TStock 
  6×5 table
    Stock     Industry      R1    R2     R3 
    _____    ___________    __    ___    ___
    'S1'     'Materials'    71    176    128
    'S2'     'Materials'    69    163    200
    'S3'     'Oil'          64    131    100
    'S4'     'Oil'          64    131    156
    'S5'     'Oil'          67    133    145
    'S6'     'Auto'         64    119    140

Now, when you use the 'grpstats' function, you will want to specify that you would like to group by the 'Industry' column. You can also specify that you would like to 'sum' the other columns. In order for this to work, you will need to omit the 'Stock' column in the calculation, as a sum cannot be performed on non-numeric data.

 

 GStock = grpstats(TStock(:,2:end),'Industry','sum')

Which will deliver the following output, in which the first column is the name of each industry, and the remaining columns are the sums of the monthly returns for each industry:

 GStock =
  3×5 table
                  Industry      GroupCount    sum_R1    sum_R2    sum_R3
                 ___________    __________    ______    ______    ______
    Materials    'Materials'    2             140       339       328   
    Oil          'Oil'          3             195       395       401   
    Auto         'Auto'         1              64       119       140

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!