Easy Computation of Marketing Metrics with Different Analysis Axis.
You can install the released version of {mmetrics} from CRAN with:
install.packages("mmetrics")
Or install the development version from github with:
# install.packages("remotes")
remotes::install_github("y-bar/mmetrics")
First, we load dummy data from {mmetrics} package for this example.
df <- mmetrics::dummy_data
df
#> gender age cost impression click conversion
#> 1 M 10 51 101 0 0
#> 2 F 20 52 102 3 1
#> 3 M 30 53 103 6 2
#> 4 F 40 54 104 9 3
#> 5 M 50 55 105 12 4
#> 6 F 60 56 106 15 5
#> 7 M 70 57 107 18 6
#> 8 F 80 58 108 21 7
#> 9 M 90 59 109 24 8
#> 10 F 100 60 110 27 9
As a next step, we define metrics to evaluate using mmetrics::define
.
# Example metrics
metrics <- mmetrics::define(
cost = sum(cost),
ctr = sum(click)/sum(impression) # CTR, Click Through Rate
)
mmetrics::add()
!Call mmetrics::add()
with grouping key (here gender
) then we will
get new data.frame
with defined metrics.
mmetrics::add(df, gender, metrics = metrics)
#> # A tibble: 2 x 3
#> gender cost ctr
#> <fct> <int> <dbl>
#> 1 F 280 0.142
#> 2 M 275 0.114
mmetrics::disaggregate()
It is hassle for users to re-define metrics when you would like to use
these for dplyr::mutate()
. In this case, you can use
mmetrics::disaggregate()
to remove the first aggregation function
for the argument and return disaggregated metrics.
# Original metrics. sum() is used for this metrics
metrics
#> <list_of<quosure>>
#>
#> $cost
#> <quosure>
#> expr: ^sum(cost)
#> env: global
#>
#> $ctr
#> <quosure>
#> expr: ^sum(click) / sum(impression)
#> env: global
# Disaggregate metrics!
metrics_disaggregated <- mmetrics::disaggregate(metrics)
# Woo! sum() are removed!!!
metrics_disaggregated
#> $cost
#> <quosure>
#> expr: ^cost
#> env: global
#>
#> $ctr
#> <quosure>
#> expr: ^click / impression
#> env: global
You can use these metrics with dplyr::mutate()
for row-wise metrics
computation.
dplyr::mutate(df, !!!metrics_disaggregated)
#> gender age cost impression click conversion ctr
#> 1 M 10 51 101 0 0 0.00000000
#> 2 F 20 52 102 3 1 0.02941176
#> 3 M 30 53 103 6 2 0.05825243
#> 4 F 40 54 104 9 3 0.08653846
#> 5 M 50 55 105 12 4 0.11428571
#> 6 F 60 56 106 15 5 0.14150943
#> 7 M 70 57 107 18 6 0.16822430
#> 8 F 80 58 108 21 7 0.19444444
#> 9 M 90 59 109 24 8 0.22018349
#> 10 F 100 60 110 27 9 0.24545455
…or, you can do the same compucation using mmetrics::gmutate()
defind
in our package. In this case, you do not need to write !!!
(bang-bang-bang) operator explicitly.
mmetrics::gmutate(df, metrics = metrics_disaggregated)
#> # A tibble: 10 x 7
#> gender age cost impression click conversion ctr
#> <fct> <dbl> <int> <int> <dbl> <int> <dbl>
#> 1 M 10 51 101 0 0 0
#> 2 F 20 52 102 3 1 0.0294
#> 3 M 30 53 103 6 2 0.0583
#> 4 F 40 54 104 9 3 0.0865
#> 5 M 50 55 105 12 4 0.114
#> 6 F 60 56 106 15 5 0.142
#> 7 M 70 57 107 18 6 0.168
#> 8 F 80 58 108 21 7 0.194
#> 9 M 90 59 109 24 8 0.220
#> 10 F 100 60 110 27 9 0.245
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.