RFM: Un ejemplo práctico de Customer Analytics con R - Zesto
62367
single,single-post,postid-62367,single-format-standard,qode-core-1.0,ajax_fade,page_not_loaded,, vertical_menu_with_scroll,smooth_scroll,side_menu_slide_from_right,grid_1300,blog_installed,wpb-js-composer js-comp-ver-4.11.2.1,vc_responsive
Customer Analytics

RFM: Un ejemplo práctico de Customer Analytics con R

RFM es una técnica muy sencilla de Customer Analytics que nos permite segmentar los clientes en función de tres variables:

  • Recency. Días desde la última compra.
  • Frecuency. Número de compras en un periodo de tiempo determinado.
  • Monetary. Importe total de las compras en un perido de tiempo.

Se basa en la ley de Pareto o ley del 80/20, que nos dice que:

La Ley de distribución de los ingresos afirma que el 80% de la riqueza y los ingresos son producidos por el 20% de la población.

Por tanto, en un ecommerce se trataría de encontrar ese 20% de clientes (¡o incluso menos!) que nos genera el 80% de los ingresos (¡o incluso más!).

Una forma sencilla de calcular estos datos es utilizar R:

¿Qué es R?

R es un lenguaje de programación enfocado al análisis estadístico con licencia GNU GLP -es decir, es software libre.

A pesar de tener una curva de aprendizaje un poco compleja, una vez que comenzamos a tener soltura nos permite manejar grandes volumenes de datos con mucha facilidad: Sí, mejor que con Excel y sobre todo mucho más rápido.

RFM con R

Lo primero que necesitamos es un CSV con los datos de ventas de un periodo determinado. Supongamos las siguientes columnas:

  • orderdate. Fecha de la compra.
  • iduser. Identificador del usuario.
  • sku. Identificador del producto.
  • unitprice. Precio de cada producto.

Cada transacción puede tener varios productos y, como en este caso no disponemos de un identificador único para cada transacción, utilizaremos la tupla (orderdate + iduser) para identificar cada compra:

Ahora ya podemos comenzar con nuestro proyecto en R. Como entorno de desarollo podemos utilizar RStudio, también Open Source.

El siguiente código (las líneas que comienzan con # son comentarios) carga los datos disponibles en el fichero customers-data.csv, obtiene los datos RFM de los usuarios, y escribe el resultado en el fichero customers-rfm.csv:


# Cargamos los datos en el data.frame itemsSold para procesarlos
itemsSold <- data.frame( read.table("customers-data.csv", header = TRUE, sep=";", dec=",") )
# Nos aseguramos de que la columna orderdate es de tipo Date
itemsSold$orderdate <- as.Date( itemsSold$orderdate, format="%d/%m/%y %H:%M" )
# Otenemos los usuarios únicos a partir de itemsSold
uniqueClients <- with( itemsSold, data.frame( iduser = sort(unique(iduser)) ) )
# Añadimos la columna recency con los días transcurridos desde la última compra
uniqueClients <- cbind(
uniqueClients,
recency = aggregate( round( as.numeric( difftime( Sys.Date(), itemsSold$orderdate, units="days")) ), list(itemsSold$iduser), min )$x
)
# Añadimos la columna frecuency con el número de compras realizadas
uniqueClients <- cbind(
uniqueClients,
frequency = with( itemsSold, as.numeric( by( orderdate, iduser, function(x) length(unique(x)) ) ) )
)
# Añadimos la columna monitery con el valor total de las compras
uniqueClients <- cbind(
uniqueClients,
monitery = with( itemsSold, as.numeric(by(unitprice,iduser,sum) ))
)
# Guardamos los datos RFM en un fichero CSV
write.csv( uniqueClients, file = "customers-rfm.csv" )

 

Ahora ya tenemos el fichero clients-rfm.csv con los datos RFM para cada cliente:

Ya puedes seguir procesando los datos con R o puedes utilizar Excel para detectar tus clientes más validosos 🙂

Conclusiones

Este ejemplo, que con R son unas pocas líneas de código, con Excel nos obligaría a desarrollar una hoja de cálculo bastante compleja. Además, si el volumen de datos es grande, es probable que Excel no tenga capacidad para moverlos fluidamente.

Si quieres saber más sobre R, aquí tienes algunas referencias:

Y si quieres comenzar a utilizar Customer Analytics en tu ecommerce, puedes contactar con nosotros 🙂

Aitor de la Puente on sabtwitterAitor de la Puente on sabpinterestAitor de la Puente on sablinkedinAitor de la Puente on sabgoogle
Aitor de la Puente
Comencé mi carrera profesional como Ing. Informático, pero algunos golpes de suerte me arrastraron hasta el Marketing Online. Actualmente, me dedico a definir y gestionar proyectos y campañas con el objetivo de maximizar el ROI de los clientes.
Aitor de la Puente About the author

Comencé mi carrera profesional como Ing. Informático, pero algunos golpes de suerte me arrastraron hasta el Marketing Online. Actualmente, me dedico a definir y gestionar proyectos y campañas con el objetivo de maximizar el ROI de los clientes.

Artículos relacionados

No hay comentarios

Deja un comentario: