library(rmarkdown)
library(readxl)
library(dplyr)
library(ggplot2)
# Cargar datos desde archivo marketing
datos <- read_excel("~/Downloads/Marketing.xlsx")
View(datos)
gasto_promedio <- datos %>%
group_by(CampaignType, CampaignChannel) %>%
summarise(Gasto_Promedio = mean(AdSpend, na.rm = TRUE))
## `summarise()` has grouped output by 'CampaignType'. You can override
## using the `.groups` argument.
print(gasto_promedio)
#Grafico de barras apiladas
ggplot(gasto_promedio, aes(x = CampaignType, y = Gasto_Promedio, fill = CampaignChannel)) +
geom_col(position = "dodge") +
labs(title = "Gasto Promedio por Tipo de Campaña y Canal",
x = "Tipo de Campaña",
y = "Gasto Promedio") +
theme_classic() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
theme(legend.position = "bottom")
# 2. Calcular la tasa de visitas por página
tasa_visitas_pagina <- datos %>%
summarise(Tasa_Visitas_Pagina = mean(PagesPerVisit, na.rm = TRUE)) %>%
pull(Tasa_Visitas_Pagina)
print(tasa_visitas_pagina)
## [1] 5.549299
datos$categoria_ingresos <- cut(datos$Income,
breaks = c(0, 30000, 75000, Inf),
labels = c("Bajo", "Medio", "Alto"))
# Tabla de frecuencias para segmentar a los clientes segun sus niveles de interaccion
tabla_categorias_ingresos <- table(datos$categoria_ingresos)
print(tabla_categorias_ingresos)
##
## Bajo Medio Alto
## 634 2755 4611
tasa_interaccion <- datos %>%
# Hay que aplicar un criterio, el cual es que si WebsiteVisits=0, Tasa_Interaccion es 0, ya que si no lo hacemos el resultado de la tasa será infinito.
mutate(Tasa_Interaccion = ifelse(WebsiteVisits == 0, 0, SocialShares / WebsiteVisits)) %>%
summarise(Tasa_Interaccion = mean(Tasa_Interaccion, na.rm = TRUE)) %>%
pull(Tasa_Interaccion)
print(tasa_interaccion)
## [1] 4.309349
proporcion_aperturas_clics <- datos %>%
# Debemos aplicar el mismo criterio que en la pregunta anterior, ya que los clientes que no han hecho clic, no han abierto ningun correo y la tasa es 0
summarise(Proporcion = mean(ifelse(EmailClicks == 0, 0, EmailOpens / EmailClicks), na.rm = TRUE)) %>%
pull(Proporcion)
print(proporcion_aperturas_clics)
## [1] 2.691653
gasto_promedio_campaña <- datos %>%
group_by(CampaignType) %>%
summarise(Gasto_Promedio = mean(AdSpend, na.rm = TRUE))
#Comparar el gasto de cada campaña con el promedio para de su tipo
comparacion_gastos <- datos %>%
left_join(gasto_promedio_campaña, by = "CampaignType") %>%
mutate(Mayor_Que_Promedio = ifelse(AdSpend > Gasto_Promedio, TRUE, FALSE)) %>%
summarise(Numero_Campanas = sum(Mayor_Que_Promedio, na.rm = TRUE))
print(comparacion_gastos)
#7. Filtrar los clientes con ingresos altos
clientes_altos <- datos %>%
filter(Income > 75000)
# Calcular la tasa de conversión por canal para clientes con ingresos altos
tasa_conversion_altos <- clientes_altos %>%
group_by(CampaignChannel) %>%
summarise(Tasa_Conversion = mean(Conversion, na.rm = TRUE))
print(tasa_conversion_altos)
ggplot(tasa_conversion_altos, aes(x = CampaignChannel, y = Tasa_Conversion)) +
geom_col() +
labs(title = "Tasa de Conversión por Canal para Clientes con Ingresos Altos",
x = "Canal de Marketing", y = "Tasa de Conversión")
proporcion_lealtad_compras <- datos %>%
# Debemos aplicar el mismo criterio que en las preguntas 4 y 5, ya que los clientes que no han hecho compras previas, no tienen puntos acumulados y la tasa es 0
summarise(Proporcion = mean(ifelse(PreviousPurchases == 0, 0, LoyaltyPoints / PreviousPurchases), na.rm = TRUE)) %>%
pull(Proporcion)
print(proporcion_lealtad_compras)
## [1] 702.187
relacion_visitas_clics <- datos %>%
group_by(CampaignType) %>%
summarise(Relacion = mean(WebsiteVisits / ClickThroughRate, na.rm = TRUE))
print(relacion_visitas_clics)
ggplot(relacion_visitas_clics, aes(x = CampaignType, y = Relacion)) +
geom_point() +
labs(title = "Relación entre Visitas al Sitio Web y Tasa de Clics por Tipo de Campaña",
x = "Tipo de Campaña", y = "Relación Visitas/Clics")
porcentaje_tiempo_visitas <- datos %>%
#Debemos aplicar el mismo criterio que en las pregunta 8
group_by(CustomerID) %>%
summarise(Porcentaje_Tiempo = mean(ifelse(WebsiteVisits == 0, 0, TimeOnSite / WebsiteVisits), na.rm = TRUE))
print(porcentaje_tiempo_visitas)
ggplot(porcentaje_tiempo_visitas, aes(x = Porcentaje_Tiempo)) +
geom_histogram(bins = 20, color = "black", fill = "lightblue") +
labs(title = "Distribución del Porcentaje de Tiempo en Sitio Web sobre Total de Visitas",
x = "Porcentaje de Tiempo", y = "Frecuencia")
campanas_retencion <- datos %>%
filter(CampaignType == "Retention")
print(campanas_retencion)
# Calcular el promedio de conversiones por canal para campañas de retención
conversiones_retencion <- campanas_retencion %>%
group_by(CampaignChannel) %>%
summarise(Promedio_Conversiones = mean(Conversion, na.rm = TRUE))
print(conversiones_retencion)
ggplot(conversiones_retencion, aes(x = CampaignChannel, y = Promedio_Conversiones)) +
geom_col() +
labs(title = "Promedio de Conversiones por Canal para Campañas de Retención",
x = "Canal de Marketing", y = "Promedio de Conversiones")