Saltar al contenido

Implementación del análisis de la comercialización en R: Parte 1

El análisis RFM (Recency, Frequency, and Monetary) es una técnica que utiliza los datos de las transacciones de los clientes para determinar los mejores clientes en función de la antigüedad de sus compras, la frecuencia de las mismas y el importe de sus gastos.

Datos

Para el análisis RFM, usaremos un conjunto de datos ficticios de clientes de tiendas minoristas que contiene 92 observaciones y 3 variables, como se describe a continuación:

Implementación del análisis de la comercialización en R: Parte 1
Implementación del análisis de la comercialización en R: Parte 1
  1. Custodia: El número de cliente único.
  2. Fecha de compra: La fecha de compra.
  3. Valor de compra: Valor de la compra (en USD).

Carguemos los datos y miremos la estructura.

12df_rfm = read_csv("RFM.csv")glimpse(df_rfm)

{r}

Salida:

12345Observaciones: 92Variables: 3$ CustId <chr ]; "Id1", "Id2", "Id3", "Id4", "Id5", "Id6", "Id7", "Id8",...$ Fecha_de_compra <chr ]; "01-Oct-19", "02-Oct-19", "03-Oct-19", "04-Oct-19", "05. ..$ Valor_de_compra...

; 19.2, 19.8, 19.7, 21.3, 20.2, 18.6, 21.5, 21.3, 21.3, 2…

Estamos interesados en el análisis a nivel de cliente, así que veamos el número único de clientes que usan el código de abajo.

1length(unique(df_rfm$CustId))

{r}

Salida:

1[1] 25

El resultado muestra que hay veinticinco clientes únicos. Realizaremos el análisis RFM de estos datos, pero antes de eso, tenemos que convertir la variable de la fecha en el formato adecuado, lo que se hace usando la primera línea de código de abajo.

Podemos observar que la variable Purchase_date cubre el período de tiempo entre el 1 de octubre de 2019 y el 31 de diciembre de 2019. Para calcular la recencia, crearemos una nueva variable, days_diff, que mide la diferencia entre la fecha de compra y la fecha de referencia, que se fija en el 1 de enero de 2020. La segunda línea de código crea esta variable, mientras que la tercera línea imprime la estructura de datos.

1234567df_rfm$Fecha_de_compra = as.Date(df_rfm$Fecha_de_compra, "%d-%b-%y")df_rfm$diferencia_de_día = round(as.numeric(difftime(time1 = "2020-01-01", time2 = df_rfm$Fecha_de_compra, unidades = "días")),0)glimpse(df_rfm)

{r}

Salida:

123456Observaciones: 92Variables: 4$ CustId <chr> "Id1", "Id2", "Id3", "Id4", "Id5", "Id6", "Id7", "Id8",...$ Fecha_de_compra <fecha;2019-10-01, 2019-10-02, 2019-10-03, 2019-10-04, 2019-1... $ Valor_de_compra...; 19.2, 19.8, 19.7, 21.3, 20.2, 18.6, 21.5, 21.3, 21.3, 2...$ días_diferencia...; 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79,...

Ahora estamos listos para realizar el análisis RFM y usaremos el paquete sqldf() para hacer el cálculo. El paquete se carga en la primera línea de código de abajo, mientras que la segunda línea realiza el cálculo. La salida se almacena en el nuevo marco de datos RFM_data, que se puede mostrar con la tercera línea de código.

12345678910biblioteca(sqldf)# Calcular la antigüedad, frecuencia y cantidad media de compraRFM_data = sqldf("SELECT CustId, MIN(days_diff) AS $0027Recency$0027, COUNT(*) AS $0027Frequency$0027, AVG(Purchase_value) AS $0027Monetary$0027 FROM df_rfm GROUP BY 1")glimpse(RFM_data)

{r}

Salida:

123456Observaciones: 25Variables: 4$ CustId <chr ]; "Id1", "Id10", "Id11", "Id12", "Id13", "Id14", "Id15", "Id16...$ Recency <dbl ]; 72, 63, 22, 21, 20, 19, 18, 17, 10, 9, 8, 1, 7, 6, 5, 4, 37,... ...$ Frecuencia...; 3, 3, 2, 2, 2, 3, 3, 3, 4, 4, 4, 8, 6, 5, 5, 5, 2, 2, 2, 4, 4, ...$ Monetario...; 23.20000, 25.83333, 32.45000, 32.85000, 33.95000, 32.23333, ...

El marco de datos resultante tiene la variable CustID y las variables calculadas, Recency, Frequency y Monetary. Hay 25 observaciones en línea con el número único de clientes en los datos originales.

Interpretación de la puntuación del RFM

Hay varias formas en que el análisis de RFM puede utilizarse para las decisiones relacionadas con la comercialización. Una de ellas consiste en examinar los valores de los percentiles de estas métricas, lo que puede hacerse con la línea de código que figura a continuación.

1sumario(RFM_data)

{r}

Salida:

1234567 CustId Frecuencia de la Recurrencia Longitud Monetaria:25 Min.: 1.00 Min. :2.00 Min. :23.20 Clase :personaje 1er Qu.: 9.00 1er Qu.: 3.00 1er Qu.: 28. 98 Modo: personaje Mediana: 19.00 Mediana: 4.00 Mediana: 32.12 Media: 24.04 Media: 3.68 Media: 30.82 Tercer cuatrimestre: 25.00 Tercer cuatrimestre: 4.00 Tercer cuatrimestre: 32.85 Máximo: 72.00 Máximo: 8.00 Máximo: 36.07 

Podemos sacar las siguientes conclusiones de la salida anterior.

  1. Recientemente: La media de recencia para los clientes es de 24 días, mientras que el valor del percentil 75 es de 25 días.
  2. `Frecuencia: La frecuencia media de los clientes es de 3,68 compras, mientras que el valor del percentil 75 es de 4 compras.
  3. Monetario: El valor medio de compra es de 30,82 dólares, mientras que el valor del percentil 75 es de 32,85 dólares.

Observamos que hay variaciones en estas métricas entre los clientes, y el equipo de marketing puede desarrollar una estrategia personalizada para dirigirse a estos clientes en base a sus valores de recencia, frecuencia y monetarios.