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
, andexposures
) 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
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.