La base datos_negocios_var_9_clientes.csv contiene información de 100
clientes de un negocio.
Las variables permiten caracterizar a los clientes en función de su
categoría, gasto, edad y número de visitas.
-Cliente: indica el tipo de cliente (Frecuente, Ocasional, Premium,
etc.).
-Gasto Mensual: monto promedio en dinero gastado por cliente en un
mes.
- Edad: edad del cliente (en años).
- Visitas Mensuales: número de visitas promedio que el cliente realiza
al negocio en un mes.
# Librerías necesarias
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)
Cargar
datos <- read_excel("datos_negocios_var_9_clientes.xlsx")
head(datos)
## # A tibble: 6 × 1
## `Categoria_Cliente,Gasto_Mensual,Edad,Visitas_Mensuales`
## <chr>
## 1 Frecuente,2048.07,45,18
## 2 Nuevo,2187.73,74,16
## 3 Frecuente,1991.32,75,26
## 4 Ocasional,182.28,19,24
## 5 Nuevo,2485.97,59,23
## 6 Frecuente,2486.65,53,28
Número de filas y columnas:
dim(datos)
## [1] 100 1
Nombres de las variables:
names(datos)
## [1] "Categoria_Cliente,Gasto_Mensual,Edad,Visitas_Mensuales"
Tipos de variables:
str(datos)
## tibble [100 × 1] (S3: tbl_df/tbl/data.frame)
## $ Categoria_Cliente,Gasto_Mensual,Edad,Visitas_Mensuales: chr [1:100] "Frecuente,2048.07,45,18" "Nuevo,2187.73,74,16" "Frecuente,1991.32,75,26" "Ocasional,182.28,19,24" ...
Medidas de resumen:
summary(select_if(datos, is.numeric))
## < table of extent 0 x 0 >
Histogramas de las variables numéricas:
num_vars <- names(select_if(datos, is.numeric))
for (v in num_vars) {
print(
ggplot(datos, aes_string(x = v)) +
geom_histogram(fill = "steelblue", color = "white", bins = 15) +
ggtitle(paste("Histograma de", v))
)
}
Tablas de frecuencia:
table(datos$Categoria_Cliente)
## Warning: Unknown or uninitialised column: `Categoria_Cliente`.
## < table of extent 0 >
Gráfico de barras:
library(tidyr)
datos <- datos %>%
separate(col = 1, into = c("Categoria_Cliente", "Gasto_Mensual", "Edad", "Visitas_Mensuales"), sep = ",") %>%
mutate(
Gasto_Mensual = as.numeric(Gasto_Mensual),
Edad = as.numeric(Edad),
Visitas_Mensuales = as.numeric(Visitas_Mensuales)
)
ggplot(datos, aes(x = Categoria_Cliente)) +
geom_bar(fill = "tomato") +
ggtitle("Frecuencia de clientes por categoría")
# 6. Revisión de valores faltantes (NA)
colSums(is.na(datos))
## Categoria_Cliente Gasto_Mensual Edad Visitas_Mensuales
## 0 0 0 0
No se detectan valores faltantes en ninguna variable.
Boxplots de las variables numéricas:
for (v in num_vars) {
print(
ggplot(datos, aes_string(y = v)) +
geom_boxplot(fill = "orange") +
ggtitle(paste("Boxplot de", v))
)
}
Se observan valores extremos en Gasto_Mensual y en Visitas_Mensuales.
La categoría Frecuente concentra la mayoría de clientes, aunque existen otros perfiles en menor cantidad.
El gasto mensual muestra un rango definido, pero algunos clientes gastan mucho más que el promedio (outliers).
La edad refleja diversidad, desde clientes jóvenes hasta adultos mayores.
Las visitas mensuales varían bastante: algunos clientes asisten de manera ocasional y otros con alta frecuencia.
La base de datos no presenta valores faltantes, lo que facilita un análisis confiable.