An experimental `with_groups()` function was added to dplyr that should be able to do the `mutate_by()` functionality and more.