groupedByNumeric method

Map<num, DataFrame> groupedByNumeric(
  1. String name
)

A map associating each value with a pure data frame.

Example:

final d = petals.withColumns(["petal_length", "species"]),
  grouped = d.groupedByNumeric("petal_length");
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   |
'------------'------------'

1.4:

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

1.3:

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

1.5:

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

4.7:

.------------.------------.
|petal_length|species     |
:------------+------------:
|4.7         |versicolor  |
'------------'------------'

4.5:

.------------.------------.
|petal_length|species     |
:------------+------------:
|4.5         |versicolor  |
'------------'------------'

4.9:

.------------.------------.
|petal_length|species     |
:------------+------------:
|4.9         |versicolor  |
'------------'------------'

4.0:

.------------.------------.
|petal_length|species     |
:------------+------------:
|4.0         |versicolor  |
'------------'------------'

6.0:

.------------.-----------.
|petal_length|species    |
:------------+-----------:
|6.0         |virginica  |
'------------'-----------'

5.1:

.------------.-----------.
|petal_length|species    |
:------------+-----------:
|5.1         |virginica  |
'------------'-----------'

5.9:

.------------.-----------.
|petal_length|species    |
:------------+-----------:
|5.9         |virginica  |
'------------'-----------'

5.6:

.------------.-----------.
|petal_length|species    |
:------------+-----------:
|5.6         |virginica  |
'------------'-----------'

Implementation

Map<num, DataFrame> groupedByNumeric(String name) {
  if (!numericColumns.containsKey(name)) {
    throw PackhorseError.badArgument("No numeric column called '$name'.");
  }
  final result = <num, DataFrame>{};
  for (final value in {...numericColumns[name]!.values}) {
    result[value] = withRowsAtIndices(
        numericColumns[name]!.indicesWhere((v) => v == value));
  }
  return result;
}