An immutable data frame works like an ordinary data frame, except
that when you subset it, it returns a reference to the original data
frame, not a a copy. This makes subsetting substantially faster and
has a big impact when you are working with large datasets with many
groups.
This method is still a little experimental, so please let me know if
you run into any problems.