groupedByCategory method

Map<String, DataFrame> groupedByCategory(
  1. String name
)

A map associating each category with a pure data frame.

Example:

final d = petals.withColumns(["petal_length", "species"]),
  grouped = d.groupedByCategory("species");
print(d);
for (final MapEntry(:key, :value) in grouped.entries) {
  print("$key:");
  print(value);
}

.------------.------------.
|petal_length|species     |
:------------+------------:
|1.4         |setosa      |
|1.4         |setosa      |
|1.3         |setosa      |
|1.5         |setosa      |
|4.7         |versicolor  |
|4.5         |versicolor  |
|4.9         |versicolor  |
|4.0         |versicolor  |
|6.0         |virginica   |
|5.1         |virginica   |
|5.9         |virginica   |
|5.6         |virginica   |
'------------'------------'

setosa:

.------------.--------.
|petal_length|species |
:------------+--------:
|1.4         |setosa  |
|1.4         |setosa  |
|1.3         |setosa  |
|1.5         |setosa  |
'------------'--------'

versicolor:

.------------.------------.
|petal_length|species     |
:------------+------------:
|4.7         |versicolor  |
|4.5         |versicolor  |
|4.9         |versicolor  |
|4.0         |versicolor  |
'------------'------------'

virginica:

.------------.-----------.
|petal_length|species    |
:------------+-----------:
|6.0         |virginica  |
|5.1         |virginica  |
|5.9         |virginica  |
|5.6         |virginica  |
'------------'-----------'

Implementation

Map<String, DataFrame> groupedByCategory(String name) {
  if (!categoricColumns.containsKey(name)) {
    throw PackhorseError.badArgument("No categoric column called '$name'.");
  }
  final result = <String, DataFrame>{};
  for (final category in categoricColumns[name]!.categories) {
    result[category] = withRowsAtIndices(
        categoricColumns[name]!.indicesWhere((c) => c == category));
  }
  return result;
}