Group by transformation

{ groupBy: ... }

groupBy is an operation that groups a single dataframe on a certain column, creating a new row for each unique value in the grouping column. It will store all the original rows belonging to that group in a nested dataframe in a column named 'grouped'. This grouped data can then be used in various ways: e.g. to create facets, making plots with multiple trend lines, or calculating summary statistics for groups or categories. Grouping by multiple columns is also possible.

Instructions

Type Description Result
String Name of column Returns grouped dataframe, grouped by one column
Array Names of columns Returns grouped dataframe, grouped by multiple columns

Usage

To grouped data based on a single categorical column, pass the name of the column as String to groupBy:

<vgg-data
  :data="{ fruit: ['apple', 'banana', 'banana', 'apple'], sales: [10, 5, 13, 9] }"
  :transform="{ groupBy: 'fruit' }"
>

  <!-- Data scope: {
    fruit: ['apple', 'banana'],
    grouped: [
      { fruit: ['apple', 'apple'], sales: [10, 9] },
      { fruit: ['banana', 'banana'], sales: [5, 13] }
    ]
  } -->

</vgg-data>

To group by multiple columns, use an Array of column names:

<vgg-data
  :data="{
    fruit: ['apple', 'banana', 'banana', 'apple', 'apple', 'banana', 'banana', 'apple'],
    onDiscount: ['yes', 'yes', 'yes', 'yes', 'no', 'no', 'no', 'no'],
    sales: [10, 5, 13, 9, 6, 4, 6, 7]
  }"
  :transform="{ groupBy: ['fruit', 'onDiscount'] }"
>

  <!-- Data scope: {
    fruit: ['apple', 'apple', 'banana', 'banana'],
    onDiscount: ['yes', 'no', 'yes', 'no']
    grouped: [
      { fruit: ['apple', 'apple'], onDiscount: ['yes', 'yes'], sales: [10, 9] },
      { fruit: ['apple', 'apple'], onDiscount: ['no', 'no'], sales: [6, 7] },
      { fruit: ['banana', 'banana'], onDiscount: ['yes', 'yes'], sales: [5, 13] },
      { fruit: ['banana', 'banana'], onDiscount: ['no', 'no'], sales: [4, 6] },
    ]
  } -->

</vgg-data>