Skip to contents

nest_by() is similar to group_by() however instead of storing the group structure in the metadata, it is made explicit in the data. Each group key is given a single row within the data.frame and the group's data is stored within a list-column of the data.frame.

Usage

nest_by(.data, ..., .key = "data", .keep = FALSE)

Arguments

.data

A data.frame.

...

Grouping specification, forwarded to group_by().

.key

character(1). The name of the column in which to nest the data (default: "data").

.keep

logical(1). Should the grouping columns be kept (default: TRUE)?

Details

Currently there is no pretty-printing provided for the results of nest_by() and they are not useable with other functions such as mutate().

Examples

mtcars %>% nest_by(am, cyl)
#>   am cyl
#> 1  0   4
#> 2  0   6
#> 3  0   8
#> 4  1   4
#> 5  1   6
#> 6  1   8
#>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         data
#> 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 24.400, 22.800, 21.500, 146.700, 140.800, 120.100, 62.000, 95.000, 97.000, 3.690, 3.920, 3.700, 3.190, 3.150, 2.465, 20.000, 22.900, 20.010, 1.000, 1.000, 1.000, 4.000, 4.000, 3.000, 2.000, 2.000, 1.000
#> 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         21.400, 18.100, 19.200, 17.800, 258.000, 225.000, 167.600, 167.600, 110.000, 105.000, 123.000, 123.000, 3.080, 2.760, 3.920, 3.920, 3.215, 3.460, 3.440, 3.440, 19.440, 20.220, 18.300, 18.900, 1.000, 1.000, 1.000, 1.000, 3.000, 3.000, 4.000, 4.000, 1.000, 1.000, 4.000, 4.000
#> 3 18.700, 14.300, 16.400, 17.300, 15.200, 10.400, 10.400, 14.700, 15.500, 15.200, 13.300, 19.200, 360.000, 360.000, 275.800, 275.800, 275.800, 472.000, 460.000, 440.000, 318.000, 304.000, 350.000, 400.000, 175.000, 245.000, 180.000, 180.000, 180.000, 205.000, 215.000, 230.000, 150.000, 150.000, 245.000, 175.000, 3.150, 3.210, 3.070, 3.070, 3.070, 2.930, 3.000, 3.230, 2.760, 3.150, 3.730, 3.080, 3.440, 3.570, 4.070, 3.730, 3.780, 5.250, 5.424, 5.345, 3.520, 3.435, 3.840, 3.845, 17.020, 15.840, 17.400, 17.600, 18.000, 17.980, 17.820, 17.420, 16.870, 17.300, 15.410, 17.050, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 2.000, 4.000, 3.000, 3.000, 3.000, 4.000, 4.000, 4.000, 2.000, 2.000, 4.000, 2.000
#> 4                                                                                                                                                                                                                                                                                                22.800, 32.400, 30.400, 33.900, 27.300, 26.000, 30.400, 21.400, 108.000, 78.700, 75.700, 71.100, 79.000, 120.300, 95.100, 121.000, 93.000, 66.000, 52.000, 65.000, 66.000, 91.000, 113.000, 109.000, 3.850, 4.080, 4.930, 4.220, 4.080, 4.430, 3.770, 4.110, 2.320, 2.200, 1.615, 1.835, 1.935, 2.140, 1.513, 2.780, 18.610, 19.470, 18.520, 19.900, 18.900, 16.700, 16.900, 18.600, 1.000, 1.000, 1.000, 1.000, 1.000, 0.000, 1.000, 1.000, 4.000, 4.000, 4.000, 4.000, 4.000, 5.000, 5.000, 4.000, 1.000, 1.000, 2.000, 1.000, 1.000, 2.000, 2.000, 2.000
#> 5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              21.000, 21.000, 19.700, 160.000, 160.000, 145.000, 110.000, 110.000, 175.000, 3.900, 3.900, 3.620, 2.620, 2.875, 2.770, 16.460, 17.020, 15.500, 0.000, 0.000, 0.000, 4.000, 4.000, 5.000, 4.000, 4.000, 6.000
#> 6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     15.80, 15.00, 351.00, 301.00, 264.00, 335.00, 4.22, 3.54, 3.17, 3.57, 14.50, 14.60, 0.00, 0.00, 5.00, 5.00, 4.00, 8.00
# Or equivalently
mtcars %>% group_by(am, cyl) %>% nest_by()
#>   am cyl
#> 1  0   4
#> 2  0   6
#> 3  0   8
#> 4  1   4
#> 5  1   6
#> 6  1   8
#>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         data
#> 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 24.400, 22.800, 21.500, 146.700, 140.800, 120.100, 62.000, 95.000, 97.000, 3.690, 3.920, 3.700, 3.190, 3.150, 2.465, 20.000, 22.900, 20.010, 1.000, 1.000, 1.000, 4.000, 4.000, 3.000, 2.000, 2.000, 1.000
#> 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         21.400, 18.100, 19.200, 17.800, 258.000, 225.000, 167.600, 167.600, 110.000, 105.000, 123.000, 123.000, 3.080, 2.760, 3.920, 3.920, 3.215, 3.460, 3.440, 3.440, 19.440, 20.220, 18.300, 18.900, 1.000, 1.000, 1.000, 1.000, 3.000, 3.000, 4.000, 4.000, 1.000, 1.000, 4.000, 4.000
#> 3 18.700, 14.300, 16.400, 17.300, 15.200, 10.400, 10.400, 14.700, 15.500, 15.200, 13.300, 19.200, 360.000, 360.000, 275.800, 275.800, 275.800, 472.000, 460.000, 440.000, 318.000, 304.000, 350.000, 400.000, 175.000, 245.000, 180.000, 180.000, 180.000, 205.000, 215.000, 230.000, 150.000, 150.000, 245.000, 175.000, 3.150, 3.210, 3.070, 3.070, 3.070, 2.930, 3.000, 3.230, 2.760, 3.150, 3.730, 3.080, 3.440, 3.570, 4.070, 3.730, 3.780, 5.250, 5.424, 5.345, 3.520, 3.435, 3.840, 3.845, 17.020, 15.840, 17.400, 17.600, 18.000, 17.980, 17.820, 17.420, 16.870, 17.300, 15.410, 17.050, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 3.000, 2.000, 4.000, 3.000, 3.000, 3.000, 4.000, 4.000, 4.000, 2.000, 2.000, 4.000, 2.000
#> 4                                                                                                                                                                                                                                                                                                22.800, 32.400, 30.400, 33.900, 27.300, 26.000, 30.400, 21.400, 108.000, 78.700, 75.700, 71.100, 79.000, 120.300, 95.100, 121.000, 93.000, 66.000, 52.000, 65.000, 66.000, 91.000, 113.000, 109.000, 3.850, 4.080, 4.930, 4.220, 4.080, 4.430, 3.770, 4.110, 2.320, 2.200, 1.615, 1.835, 1.935, 2.140, 1.513, 2.780, 18.610, 19.470, 18.520, 19.900, 18.900, 16.700, 16.900, 18.600, 1.000, 1.000, 1.000, 1.000, 1.000, 0.000, 1.000, 1.000, 4.000, 4.000, 4.000, 4.000, 4.000, 5.000, 5.000, 4.000, 1.000, 1.000, 2.000, 1.000, 1.000, 2.000, 2.000, 2.000
#> 5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              21.000, 21.000, 19.700, 160.000, 160.000, 145.000, 110.000, 110.000, 175.000, 3.900, 3.900, 3.620, 2.620, 2.875, 2.770, 16.460, 17.020, 15.500, 0.000, 0.000, 0.000, 4.000, 4.000, 5.000, 4.000, 4.000, 6.000
#> 6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     15.80, 15.00, 351.00, 301.00, 264.00, 335.00, 4.22, 3.54, 3.17, 3.57, 14.50, 14.60, 0.00, 0.00, 5.00, 5.00, 4.00, 8.00