• dt_count calculate number of cases by groups, possibly weighted. dt_add_count adds number of cases to existing dataset

  • dt_top_n returns top n rows from each group.

dt_count(data, ..., weight = NULL, sort = FALSE, name = "n")

dt_add_count(data, ..., weight = NULL, sort = FALSE, name = "n")

dt_top_n(data, n, by, order_by = NULL)

Arguments

data

data.table/data.frame data.frame will be automatically converted to data.table.

...

variables to group by.

weight

optional. Unquoted variable name. If provided result will be the sum of this variable by groups.

sort

logical. If TRUE result will be sorted in desending order by resulting variable.

name

character. Name of resulting variable.

n

numeric. number of top cases. If n is negative then bottom values will be returned.

by

list or vector of grouping variables

order_by

unquoted variable name by which result will be sorted. If not specified, defaults to the last variable in the dataset.

Value

data.table

Examples

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