---
title: "Introduction to marketr"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Introduction to marketr}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---

## Introduction to marketr

`marketr` facilitates tidy calculation of popular quantitative marketing metrics (like Customer Experience Index and Net Promoter Score). By "tidy", I am referring to the usage of the tidyverse packages and methodology for organizing and analyzing data. The package is designed so that beginning R users can calculate these metrics, along many dimensions, without needing to learn much R syntax. It is also helpful for more experienced programmers to do these calculations quickly.

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.width = 6)

```

## Generate survey response data

To demonstrate the basic usage I will create simulated survey response data. `needs`, `ease` and `emotion` are the columns that make up CXi; `nps_question` is used for NPS; `grps` and `months` will show how these metrics can be calculated along categorical features and/or trended over time.

```{r gen_data}
library(marketr)
library(dplyr)
library(magrittr)
library(ggplot2)

needs <- sample(2:5, 1000, replace = T)
ease <- sample(2:5, 1000, replace = T)
emotion <- sample(2:5, 1000, replace = T)
nps_question <- sample(3:10, 1000, replace = T)
grps <- c("a", "b", "c")
months <- sample(1:12, 1000, replace = T)

survey_data <- tibble::as_tibble(cbind(needs, ease, emotion, nps_question, grps, months)) %>%
  mutate(month = as.numeric(months))

head(survey_data)
```

## Calculating CXi

*Customer Experience Index* (CXI) was [developed by Forrester](https://go.forrester.com/analytics/cx-index/). Per Forrester, CXi "measures how successfully a company delivers customer experiences that create and sustain loyalty." 

It involves scoring three questions, each with a likert scale response, and then averaging those scores together. Below, four calculations are done using two different functions.

```{r cxi}
# Overall CXi
cxi_calc(survey_data) %>% knitr::kable()

## CXi by group
cxi_calc(survey_data, grps, cx_high = 4, cx_low = 2) %>% knitr::kable()

# Overall CXi trend
cxi_trend(survey_data, month) %>% knitr::kable() 

# Overall CXi trend by group - plotted
cxi_trend(survey_data, month, grps, cx_high = 4, cx_low = 2, min_surveys = 1, avg_surveys = 0) %>% 
  ggplot(aes(x = month, y = cxi)) +
  geom_line() +
  facet_wrap(grps ~ ., nrow = 3)
```


## Calculating NPS

*Net Promoter Score* (NPS) was originally developed by Fred Reichheld and now is owned by [Bain Company and Satmetrix Systems](https://www.netpromoter.com/). The [Wikipedia page](https://en.wikipedia.org/wiki/Net_Promoter) is another good source of information. According to Wikipedia it "is a management tool that can be used to gauge the loyalty of a firm's customer relationships."

The calculation requires a single question with a ten-point scale. Like CXi it is not difficult to do manually; the package enables deeper analysis.Below, four calculations are done using two different functions.

```{r NPS}
# Overall NPS
nps_calc(survey_data) %>% knitr::kable()

## NPS by group
nps_calc(survey_data, grps) %>% knitr::kable()

# Overall NPS trend
nps_trend(survey_data, month) %>% knitr::kable()

# Overall NPS trend by group - plotted
nps_trend(survey_data, month, grps, min_surveys = 1, avg_surveys = 0) %>% 
  ggplot(aes(x = month, y = nps)) +
  geom_line() +
  facet_wrap(grps ~ ., nrow = 3)
```
