Analogous function for nest and unnest in tidyr. unnest_col will automatically remove other list-columns except for the target list-column (which would be unnested later).

nest_by(data, group = NULL, negate = FALSE)

unnest_col(data, col)

Arguments

data

data.table, nested or unnested

group

The variable for nest group, could recieve character vector or regular expression.

negate

Applicable when the "group" parameter uses regular expression, if TRUE, return non-matching elements.

col

The single variable of nested data to be unnested

Value

data.table, nested or unnested

Details

In the nest_dt, the data would be nested to a column named `ndt`, which is short for nested data.table.

References

https://www.r-bloggers.com/much-faster-unnesting-with-data-table/

https://stackoverflow.com/questions/25430986/create-nested-data-tables-by-collapsing-rows-into-new-data-tables

See also

Examples

mtcars %>% nest_by("cyl")
#> cyl ndt #> <num> <list> #> 1: 6 <data.table> #> 2: 4 <data.table> #> 3: 8 <data.table>
mtcars %>% nest_by("cyl|vs")
#> cyl vs ndt #> <num> <num> <list> #> 1: 6 0 <data.table> #> 2: 4 1 <data.table> #> 3: 6 1 <data.table> #> 4: 8 0 <data.table> #> 5: 4 0 <data.table>
mtcars %>% nest_by(c("cyl","vs"))
#> cyl vs ndt #> <num> <num> <list> #> 1: 6 0 <data.table> #> 2: 4 1 <data.table> #> 3: 6 1 <data.table> #> 4: 8 0 <data.table> #> 5: 4 0 <data.table>
mtcars %>% nest_by("cyl|vs") %>% unnest_col(ndt)
#> cyl vs mpg disp hp drat wt qsec am gear carb #> <num> <num> <num> <num> <num> <num> <num> <num> <num> <num> <num> #> 1: 6 0 21.0 160.0 110 3.90 2.620 16.46 1 4 4 #> 2: 6 0 21.0 160.0 110 3.90 2.875 17.02 1 4 4 #> 3: 6 0 19.7 145.0 175 3.62 2.770 15.50 1 5 6 #> 4: 4 1 22.8 108.0 93 3.85 2.320 18.61 1 4 1 #> 5: 4 1 24.4 146.7 62 3.69 3.190 20.00 0 4 2 #> 6: 4 1 22.8 140.8 95 3.92 3.150 22.90 0 4 2 #> 7: 4 1 32.4 78.7 66 4.08 2.200 19.47 1 4 1 #> 8: 4 1 30.4 75.7 52 4.93 1.615 18.52 1 4 2 #> 9: 4 1 33.9 71.1 65 4.22 1.835 19.90 1 4 1 #> 10: 4 1 21.5 120.1 97 3.70 2.465 20.01 0 3 1 #> 11: 4 1 27.3 79.0 66 4.08 1.935 18.90 1 4 1 #> 12: 4 1 30.4 95.1 113 3.77 1.513 16.90 1 5 2 #> 13: 4 1 21.4 121.0 109 4.11 2.780 18.60 1 4 2 #> 14: 6 1 21.4 258.0 110 3.08 3.215 19.44 0 3 1 #> 15: 6 1 18.1 225.0 105 2.76 3.460 20.22 0 3 1 #> 16: 6 1 19.2 167.6 123 3.92 3.440 18.30 0 4 4 #> 17: 6 1 17.8 167.6 123 3.92 3.440 18.90 0 4 4 #> 18: 8 0 18.7 360.0 175 3.15 3.440 17.02 0 3 2 #> 19: 8 0 14.3 360.0 245 3.21 3.570 15.84 0 3 4 #> 20: 8 0 16.4 275.8 180 3.07 4.070 17.40 0 3 3 #> 21: 8 0 17.3 275.8 180 3.07 3.730 17.60 0 3 3 #> 22: 8 0 15.2 275.8 180 3.07 3.780 18.00 0 3 3 #> 23: 8 0 10.4 472.0 205 2.93 5.250 17.98 0 3 4 #> 24: 8 0 10.4 460.0 215 3.00 5.424 17.82 0 3 4 #> 25: 8 0 14.7 440.0 230 3.23 5.345 17.42 0 3 4 #> 26: 8 0 15.5 318.0 150 2.76 3.520 16.87 0 3 2 #> 27: 8 0 15.2 304.0 150 3.15 3.435 17.30 0 3 2 #> 28: 8 0 13.3 350.0 245 3.73 3.840 15.41 0 3 4 #> 29: 8 0 19.2 400.0 175 3.08 3.845 17.05 0 3 2 #> 30: 8 0 15.8 351.0 264 4.22 3.170 14.50 1 5 4 #> 31: 8 0 15.0 301.0 335 3.54 3.570 14.60 1 5 8 #> 32: 4 0 26.0 120.3 91 4.43 2.140 16.70 1 5 2 #> cyl vs mpg disp hp drat wt qsec am gear carb