Added cross() operation to group object #110
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added a new cross() method to the group object to make it easier to get 2-dimensional data out of crossfilter. The current implementation scans the whole data set and doesn't use the incremental update capabilities, but it does use the group indices.
Basically, if group A has keys "a", "b", and "c" and group X has keys "x", "y", and "z", then calling A.cross(X) will give you an array with 9 values, one for each combination. Should be faster than looping over one group, calling filter on the dimension for each group key (assuming identity group transform), and then reducing using the other group.
There is an option to honor or ignore the filters on the two crossed dimensions – filters on other dimensions will always be honored.
Also added a couple of tests but I won't pretend the coverage is 100%.