Skip to contents

Add proportions of expstudy metric variables. Other variables can be provided via the <dynamic-dots> argument. Proportions will sum to 100% per group if .base_grp_nms are provided. If .base_grp_nms are omitted, proportions will sum to 100% in total.

Usage

add_proportions(expstudy, ..., .base_grp_nms = character(0), .min_ungrpd = 0L)

Arguments

expstudy

an expstudy()

...

other columns other than the expstudy metric variables (actuals, expecteds, and exposures) to generate proportions of

.base_grp_nms

character vector of column names to use as the base of added proportions

.min_ungrpd

minimum number of non-grouping columns required before using .base_grp_nms as proportion base

Value

An expstudy with added proportions.

Examples

  es <- expstudy(
    data = mortexp,
    actuals = ACTUAL_DEATHS,
    expecteds = EXPECTED_DEATHS,
    exposures =  EXPOSURE,
    variances = VARIANCE_DEATHS
  )

  # If no arguments are provided, proportions will be generated for expstudy
  # metric variables only. This mostly makes sense for already aggregated
  # expstudy objects, but can be used with unaggregated objects as well.
  es %>%
    aggregate(
      ATTAINED_AGE
    ) %>%
    add_proportions
#> Source: local data table [83 x 9]
#> Call:   `_DT7`[, .(ACTUAL_DEATHS = sum(ACTUAL_DEATHS), EXPECTED_DEATHS = sum(EXPECTED_DEATHS), 
#>     EXPOSURE = sum(EXPOSURE), VARIANCE_DEATHS = sum(VARIANCE_DEATHS)), 
#>     keyby = .(ATTAINED_AGE)][, `:=`(PROP_ACTUAL_DEATHS = ACTUAL_DEATHS/sum(ACTUAL_DEATHS), 
#>     PROP_EXPECTED_DEATHS = EXPECTED_DEATHS/sum(EXPECTED_DEATHS), 
#>     PROP_EXPOSURE = EXPOSURE/sum(EXPOSURE), PROP_VARIANCE_DEATHS = VARIANCE_DEATHS/sum(VARIANCE_DEATHS))]
#> 
#>   ATTAINED_AGE ACTUAL_DEATHS EXPECTED_DEATHS EXPOSURE VARIANCE_DEATHS
#>          <dbl>         <dbl>           <dbl>    <dbl>           <dbl>
#> 1           19             0           0.214     21.7           0.214
#> 2           20             0           0.565     56.5           0.565
#> 3           21             0           0.662     65.5           0.661
#> 4           22             0           0.713     69.9           0.712
#> 5           23             0           0.828     80.3           0.827
#> 6           24             0           0.884     84.9           0.884
#> # ℹ 77 more rows
#> # ℹ 4 more variables: PROP_ACTUAL_DEATHS <dbl>, PROP_EXPECTED_DEATHS <dbl>,
#> #   PROP_EXPOSURE <dbl>, PROP_VARIANCE_DEATHS <dbl>
#> 
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results

  # For grouped proportions, use `.base_grp_nms` to identify which variable
  # to use as the base for proportions.
  es %>%
    aggregate(
      GENDER,
      SMOKING_STATUS
    ) %>%
    add_proportions(
      .base_grp_nms = 'GENDER'
    )
#> Source: local data table [4 x 10]
#> Groups: GENDER
#> Call:   `_DT7`[, .(ACTUAL_DEATHS = sum(ACTUAL_DEATHS), EXPECTED_DEATHS = sum(EXPECTED_DEATHS), 
#>     EXPOSURE = sum(EXPOSURE), VARIANCE_DEATHS = sum(VARIANCE_DEATHS)), 
#>     keyby = .(GENDER, SMOKING_STATUS)][, `:=`(PROP_ACTUAL_DEATHS = ACTUAL_DEATHS/sum(ACTUAL_DEATHS), 
#>     PROP_EXPECTED_DEATHS = EXPECTED_DEATHS/sum(EXPECTED_DEATHS), 
#>     PROP_EXPOSURE = EXPOSURE/sum(EXPOSURE), PROP_VARIANCE_DEATHS = VARIANCE_DEATHS/sum(VARIANCE_DEATHS)), 
#>     by = .(GENDER)]
#> 
#>   GENDER SMOKING_STATUS ACTUAL_DEATHS EXPECTED_DEATHS EXPOSURE VARIANCE_DEATHS
#>   <fct>  <fct>                  <dbl>           <dbl>    <dbl>           <dbl>
#> 1 FEMALE NON-SMOKER                95            76.3    4294.            76.2
#> 2 FEMALE SMOKER                    39            30.9    1804.            30.8
#> 3 MALE   NON-SMOKER               146           102.     5662.           102. 
#> 4 MALE   SMOKER                    69            42.5    2504.            42.5
#> # ℹ 4 more variables: PROP_ACTUAL_DEATHS <dbl>, PROP_EXPECTED_DEATHS <dbl>,
#> #   PROP_EXPOSURE <dbl>, PROP_VARIANCE_DEATHS <dbl>
#> 
#> # Use as.data.table()/as.data.frame()/as_tibble() to access results

  # `.min_ungrpd` is useful only when generating multiple combinations of
  # results with compile_results(); this prevents proportions all equaling
  # 100% when all grouping columns are used.