groupedByCategory method
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;
}