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