withCategoricColumnEnumerated method
A new data frame with numeric columns added to identify each category.
Example:
final d = petals.withColumns(["species"]);
print(d);
print(d.withCategoricColumnEnumerated("species"));
.------------.
|species |
:------------:
|setosa |
|setosa |
|setosa |
|setosa |
|versicolor |
|versicolor |
|versicolor |
|versicolor |
|virginica |
|virginica |
|virginica |
|virginica |
'------------'
.--------------.------------------.-----------------.------------.
|species_setosa|species_versicolor|species_virginica|species |
:--------------+------------------+-----------------+------------:
|1 |0 |0 |setosa |
|1 |0 |0 |setosa |
|1 |0 |0 |setosa |
|1 |0 |0 |setosa |
|0 |1 |0 |versicolor |
|0 |1 |0 |versicolor |
|0 |1 |0 |versicolor |
|0 |1 |0 |versicolor |
|0 |0 |1 |virginica |
|0 |0 |1 |virginica |
|0 |0 |1 |virginica |
|0 |0 |1 |virginica |
'--------------'------------------'-----------------'------------'
Implementation
DataFrame withCategoricColumnEnumerated(String name) {
if (!categoricColumns.containsKey(name)) {
throw PackhorseError.badArgument("No categoric column called '$name'.");
}
return copy
..numericColumns.addAll({
for (final category in categoricColumns[name]!.categories)
"${name}_$category": NumericColumn(
categoricColumns[name]!.values.map((x) => x == category ? 1 : 0))
});
}