Merges two data frames with different levels to create a single data frame

merge_multilevel(
  dat_l1,
  dat_l2 = NULL,
  id,
  var_agg,
  suffix_l = c(".l1", ".l2"),
  suffix_m = c("", ".mean"),
  agg_func = function(x) mean(x, na.rm = TRUE)
)

Arguments

dat_l1

Level 1 data frame containing data to merge

dat_l2

Level 2 data frame containing data to merge

id

String with variable name for matching datasets

var_agg

Vector with strings of L1 variables that are aggregated at Level2 with the agg_func function.

suffix_l

A character vector of suffixes for the merged Level 2 columns (default: c('.l1', '.l2'))

suffix_m

A character vector of suffixes for the merged aggregated columns (default: c(”, '.mean'))

agg_func

The function used in aggregation (default: function(x) mean(x, na.rm = TRUE))

Value

Returns a merged data frame

Examples

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