0% encontró este documento útil (0 votos)
0 vistas21 páginas

Informe

El documento presenta un análisis exploratorio de datos de un concesionario de autos con un conjunto de 60 clientes y 8 variables. Se identifican problemas en los datos, como registros incompletos, errores de digitación y la necesidad de corregir tipos de datos. Se concluye que las marcas preferidas son Audi y Renault, y que la mayoría de los clientes se encuentran en el rango de edad de 40 a 60 años.

Cargado por

danna mendieta
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas21 páginas

Informe

El documento presenta un análisis exploratorio de datos de un concesionario de autos con un conjunto de 60 clientes y 8 variables. Se identifican problemas en los datos, como registros incompletos, errores de digitación y la necesidad de corregir tipos de datos. Se concluye que las marcas preferidas son Audi y Renault, y que la mayoría de los clientes se encuentran en el rango de edad de 40 a 60 años.

Cargado por

danna mendieta
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Análisis exploratorio de datos

para un concesionario de autos


2026-03-27

Exploración inicial de datos


Descripción de estructura del conjunto de datos
Podemos observar que hay sesenta (60) clientes. Tenemos las siguientes
ocho (8)variables:
1. EDAD (Cuantitativa discreta),

2. SEXO es Cualitativa nominal

3. ESTATURA (Cuantitativa continua)

4. NIVEL ESCOLAR (Cualitativa ordinal)

5. MARCA DE AUTO (Cualitativa nominal)

6. NUMERO DE HIJOS (Cuantitativa discreta)

7. SALARIO (Cuantitava continua)

8. MASCOTA (Cualitativa nominal)

Con la función head() podemos visualizar las primeras 6 filas del dataset.
library(readxl)
t1fe_tabla_taller <- read_excel("t1fe-tabla_taller.xlsx")
View(t1fe_tabla_taller)
head(t1fe_tabla_taller)

## # A tibble: 6 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
`NUMERO DE HIJOS`
## <chr> <chr> <chr> <chr> <chr> <chr>
<chr>
## 1 <NA> <NA> <NA> <NA> <NA> <NA> <NA>

## 2 <NA> <NA> <NA> <NA> <NA> <NA> <NA>

## 3 PERSON… 21 M 1.54 MAESTRÍA AUDI 0

## 4 PERSON… 26 F 1.55 PROFESIONAL RENAULT 5


## 5 PERSON… 30 F 1.6 DOCTORADO BMW 2

## 6 PERSON… 31 f 1.7 PROFESIONAL RENAULT 2

## # ℹ 2 more variables: SALARIO <dbl>, MASCOTA <chr>

Podemos validar que hay dos filas completas vacías (1 y 2).


Con la función tail() podemos visualizar las últimas 6 filas del dataset.
library(readxl)
t1fe_tabla_taller <- read_excel("t1fe-tabla_taller.xlsx")
View(t1fe_tabla_taller)
tail(t1fe_tabla_taller)

## # A tibble: 6 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
`NUMERO DE HIJOS`
## <chr> <chr> <chr> <chr> <chr> <chr>
<chr>
## 1 PERSON… 30 F 1.54 MAESTRÍA CHEVROLET 2

## 2 PERSON… 39 M 1.58 MAESTRÍA AUDI 1

## 3 PERSON… 34 F 1.6 DOCTORADO BMW 1

## 4 PERSON… 24 f 1.7 PROFESIONAL RENAULT 3

## 5 PERSON… 20 M 1.71 MAESTRÍA AUDI 0

## 6 PERSON… 10 M 1.8 PROFESIONAL AUDI 0

## # ℹ 2 more variables: SALARIO <dbl>, MASCOTA <chr>

Se observa que para la variable SEXO hay un error de digitación en el género


femenino donde se escribió con minúscula a diferencia del resto que está en
mayúscula.
Con la función str() podemos visualizar los tipos de datos de cada columna
(variable) del dataset.
library(readxl)
t1fe_tabla_taller <- read_excel("t1fe-tabla_taller.xlsx")
View(t1fe_tabla_taller)
str(t1fe_tabla_taller)

## tibble [62 × 9] (S3: tbl_df/tbl/[Link])


## $ PERSONA : chr [1:62] NA NA "PERSONA 1" "PERSONA 2" ...
## $ EDAD : chr [1:62] NA NA "21" "26" ...
## $ SEXO : chr [1:62] NA NA "M" "F" ...
## $ ESTATURA : chr [1:62] NA NA "1.54" "1.55" ...
## $ NIVEL ESCOLAR : chr [1:62] NA NA "MAESTRÍA" "PROFESIONAL" ...
## $ MARCA DE AUTO : chr [1:62] NA NA "AUDI" "RENAULT" ...
## $ NUMERO DE HIJOS: chr [1:62] NA NA "0" "5" ...
## $ SALARIO : num [1:62] NA NA 1200000 1250000 900000 800000
950000 2000000 2500000 3500000 ...
## $ MASCOTA : chr [1:62] NA NA "SI" "NO" ...

Se observa que 8 variables son tipo texto, y 1 es tipo numérico, pero esto
puede deberse al error en los datos, ya que en realidad, variables numéricas
son 3 y tipo texto son 6.
Con la función summary() podemos ver una descripción de cada una de las
variables (Longitud y tipo de dato)
library(readxl)
t1fe_tabla_taller <- read_excel("t1fe-tabla_taller.xlsx")
View(t1fe_tabla_taller)
summary(t1fe_tabla_taller)

## PERSONA EDAD SEXO


ESTATURA
## Length:62 Length:62 Length:62 Length:62

## Class :character Class :character Class :character


Class :character
## Mode :character Mode :character Mode :character
Mode :character
##

##

##

##

## NIVEL ESCOLAR MARCA DE AUTO NUMERO DE HIJOS


SALARIO
## Length:62 Length:62 Length:62 Min. :
800000
## Class :character Class :character Class :character 1st
Qu.:2000000
## Mode :character Mode :character Mode :character
Median :3450000
##
Mean :3286667
## 3rd
Qu.:4700000
##
Max. :6500000
## NA's :2
## MASCOTA
## Length:62
## Class :character
## Mode :character
##
##
##
##

Podemos visualizar que en la variable SALARIO se realizó análisis estadístico


toda vez que fue la única que identificó como numérica.
A continuación vamos a mostrar los faltantes por variable y el total
library(readxl)
t1fe_tabla_taller <- read_excel("t1fe-tabla_taller.xlsx")
View(t1fe_tabla_taller)
colSums([Link](t1fe_tabla_taller))#se ingresa este codigo para contar
los datos faltantes por variable.

## PERSONA EDAD SEXO ESTATURA


NIVEL ESCOLAR
## 2 2 3 2
3
## MARCA DE AUTO NUMERO DE HIJOS SALARIO MASCOTA
## 4 3 2 3

Problemas en los datos: se identificaron registros incompletos en todas las


variables, la falta de datos en Marca de auto y Sexo. Además, existen
variables en las cuales se utilizan mayúsculas y minúsculas, tambien errores
ortográficos en las marcas como BWM y FOR, se encuentra un valor atípico
en la variable Número de hijos (54 y 20 hijos), lo cual sesgaría el análisis
estadístico.

Análisis de la variable “MARCA DE AUTO”


En cuanto a los datos faltantes corremos el siguiente script de identificación:
nrow(t1fe_tabla_taller)

## [1] 62

a <- seq(1:nrow(t1fe_tabla_taller))[[Link](t1fe_tabla_taller$PERSONA)];
a

## [1] 1 2

Es decir que sí hay datos faltantes y que se encuentras en las filas 1 y 2.


Ahora procedemos a eliminar esas filas para depurar nuestra base con el
siguiente script:
t1fe_tabla_taller <- t1fe_tabla_taller[-a,]

A continuación mostramos la tabla de fecuencia:


table(t1fe_tabla_taller$`MARCA DE AUTO`)

##
## AUDI BMW BWM CHEVROLET FOR FORD
NA renault
## 13 11 1 12 1 6
1 1
## RENAULT
## 12

Podemos identificar error en digitación de la marca FORD donde una persona


digitó “FOR”, en la marca BMW una persona digitó “BWM” y en la marca
REANULT una persona digitó “renault” y hay un dato vacío. Por lo tanto
vamos a corregir esos errores con el siguiente código:
t1fe_tabla_taller$`MARCA DE AUTO`<- replace(t1fe_tabla_taller$`MARCA
DE AUTO`, t1fe_tabla_taller$`MARCA DE AUTO`== "BWM", "BMW")
t1fe_tabla_taller$`MARCA DE AUTO`<- replace(t1fe_tabla_taller$`MARCA
DE AUTO`, t1fe_tabla_taller$`MARCA DE AUTO`== "FOR", "FORD")
t1fe_tabla_taller$`MARCA DE AUTO`<- replace(t1fe_tabla_taller$`MARCA
DE AUTO`, t1fe_tabla_taller$`MARCA DE AUTO`== "renault", "RENAULT")
table(t1fe_tabla_taller$`MARCA DE AUTO`)

##
## AUDI BMW CHEVROLET FORD NA RENAULT
## 13 12 12 7 1 13

Ahora procedemos a generar el diagrama de barras respectivo:


tabla_marca <- table(t1fe_tabla_taller$`MARCA DE AUTO`)
g1 <- barplot(tabla_marca,
main = "Distribucion de marcas de autos",
col = rainbow(length(table(t1fe_tabla_taller$`MARCA DE
AUTO`))),
xlab = "Marca de auto",
ylab = "Frecuencia",
ylim =c(0,15))
text(x = g1,
y = tabla_marca,
labels = tabla_marca,
pos = 3) # pos = 3 pone el texto justo encima de la barra
Para el diagrama de torta evidenciamos que hay dos datos vacíos que
generan distorción, por lo que los restamos de la cantidad de datos de la
variable, teniendo en total 58 registros aprovechables. A continuación,
También el diagrama de torta:
library(paletteer)
library(ggthemes)

n <- length(t1fe_tabla_taller$`MARCA DE AUTO`);n

## [1] 60

n <- n-sum([Link](t1fe_tabla_taller$`MARCA DE AUTO`));n

## [1] 58

[Link] <- round(tabla_marca/n,2);[Link] # cálculo de


frecuencias relativas

##
## AUDI BMW CHEVROLET FORD NA RENAULT
## 0.22 0.21 0.21 0.12 0.02 0.22

prctg <- [Link]*100;prctg # cálculo de


porcentajes
##
## AUDI BMW CHEVROLET FORD NA RENAULT
## 22 21 21 12 2 22

#Combinando los vectores para crear una tabla


Tab1 <-

rbind(cbind([Link]=tabla_marca,[Link]=[Link],Porcen
taje=prctg),
Total=apply(cbind(tabla_marca,[Link],prctg),2,sum))
View(Tab1)

pie(tabla_marca,
labels=paste(rownames(tabla_marca),
"\n",
round((tabla_marca/n)*100,2),"%"),
main="Proporción de marcas de autos",
col = paletteer_c("ggthemes::Blue-Teal", 6))

Podemos concluir que la marca preferida de nuestros clientes


realmente son dos: Audi y Renault, ambas con el 22.41%

Análisis de la variable “EDAD”


Validamos el tipo de variable que importó por defecto Rstudio y vemos que
la etiquetó como caracter pero es una variable numérica, realizamos la
corrección:
class(t1fe_tabla_taller$EDAD) #identificamos el tipo de variable

## [1] "character"

t1fe_tabla_taller$EDAD <- [Link](t1fe_tabla_taller$EDAD) #se


cambia el tipo de variabole a numérica

## Warning: NAs introducidos por coerción

class(t1fe_tabla_taller$EDAD) #identificamos el tipo de variable

## [1] "numeric"

View(t1fe_tabla_taller) #se visualiza que el cambio sea efectivo

Ahora identificamos los espacios vacíos y datos no numéricos ingresados por


los usuarios y los eliminamos:
t1fe_tabla_taller[[Link](t1fe_tabla_taller$EDAD), ] #se detectan los
espacios vacíos y texto en lugar de número

## # A tibble: 2 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
`NUMERO DE HIJOS`
## <chr> <dbl> <chr> <chr> <chr> <chr>
<chr>
## 1 PERSON… NA F 1.54 <NA> FORD NA

## 2 PERSON… NA M 1.6 PROFESIONAL FORD 0

## # ℹ 2 more variables: SALARIO <dbl>, MASCOTA <chr>

tabla_limpia <- t1fe_tabla_taller[![Link](t1fe_tabla_taller$EDAD), ]


#se eliminan los datos vacíos y con texto en lugar de número
View(tabla_limpia) #se visualiza cómo queda la base después de la
eliminación

Finalmente procedemos a generar un histograma para validar la distribución


de nuestros clientes por rangos de edad (0-10,11-20,21-30,31-40,41-50,51-
60 y 61-70):
hist(tabla_limpia$EDAD,main="Distribución de edad de los clientes",
ylab="Frecuencia absoluta",xlab="Edad",col="aquamarine",ylim=c(0,15))
Podemos concluir que la mayoría de los clientes están en los rangos
de edad de 40 a 60 años, personas adultas. Aun así, otro segmento
interesante está en el rango de 20 a 30 años.

Análisis de la variable “Estatura”


Validamos el tipo de variable que importó por defecto Rstudio y vemos que
la etiquetó como caracter pero es una variable numérica, realizamos la
corrección:
class(t1fe_tabla_taller$ESTATURA) #identificamos el tipo de variable

## [1] "character"

t1fe_tabla_taller$ESTATURA <- [Link](t1fe_tabla_taller$ESTATURA)


#se cambia el tipo de variabole a numérica
class(t1fe_tabla_taller$ESTATURA) #identificamos el tipo de variable

## [1] "numeric"

View(t1fe_tabla_taller) #se visualiza que el cambio sea efectivo

Ahora identificamos los espacios vacíos y datos no numéricos ingresados por


los usuarios:
t1fe_tabla_taller[[Link](t1fe_tabla_taller$ESTATURA), ] #se detectan
los espacios vacíos y texto en lugar de número
## # A tibble: 0 × 9
## # ℹ 9 variables: PERSONA <chr>, EDAD <dbl>, SEXO <chr>, ESTATURA
<dbl>,
## # NIVEL ESCOLAR <chr>, MARCA DE AUTO <chr>, NUMERO DE HIJOS
<chr>,
## # SALARIO <dbl>, MASCOTA <chr>

Concluimos que no hay valores vacíos ni no numéricos. Por lo tanto,


procedemos a realizar la tabla de frecuencias para validar si hay valores
atípicos:
library(fdth)

##
## Adjuntando el paquete: 'fdth'

## The following objects are masked from 'package:stats':


##
## sd, var

tabla_estatura <- fdt(t1fe_tabla_taller$ESTATURA,breaks =


"Sturges",[Link] = T);tabla_estatura

## Class limits f rf rf(%) cf cf(%)


## [1.475,1.762) 45 0.75 75.00 45 75.00
## [1.762,2.049) 14 0.23 23.33 59 98.33
## [2.049,2.336) 0 0.00 0.00 59 98.33
## [2.336,2.623) 0 0.00 0.00 59 98.33
## [2.623,2.91) 0 0.00 0.00 59 98.33
## [2.91,3.197) 0 0.00 0.00 59 98.33
## [3.197,3.485) 1 0.02 1.67 60 100.00

Podemos identificar que hay un dato atípico de más de 3 metros lo cual no


es coherente. Procedemos a eliminarlo:
t1fe_tabla_taller[t1fe_tabla_taller$ESTATURA>=3,]

## # A tibble: 1 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
`NUMERO DE HIJOS`
## <chr> <dbl> <chr> <dbl> <chr> <chr>
<chr>
## 1 PERSON… 21 <NA> 3.45 NA BMW 0

## # ℹ 2 more variables: SALARIO <dbl>, MASCOTA <chr>

estatura_filtrada <- t1fe_tabla_taller[t1fe_tabla_taller$ESTATURA<=3,]


estatura_filtrada

## # A tibble: 59 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
## <chr> <dbl> <chr> <dbl> <chr> <chr>
## 1 PERSONA 1 21 M 1.54 MAESTRÍA AUDI
## 2 PERSONA 2 26 F 1.55 PROFESIONAL RENAULT
## 3 PERSONA 3 30 F 1.6 DOCTORADO BMW
## 4 PERSONA 4 31 f 1.7 PROFESIONAL RENAULT
## 5 PERSONA 5 35 M 1.71 MAESTRÍA AUDI
## 6 PERSONA 6 65 M 1.8 MAESTRÍA AUDI
## 7 PERSONA 7 45 M 1.54 MAESTRÍA BMW
## 8 PERSONA 8 42 F 1.52 PROFESIONAL RENAULT
## 9 PERSONA 9 52 F 1.51 DOCTORADO RENAULT
## 10 PERSONA 10 63 M 1.65 DOCTORADO RENAULT
## # ℹ 49 more rows
## # ℹ 3 more variables: `NUMERO DE HIJOS` <chr>, SALARIO <dbl>,
MASCOTA <chr>

Generamos una nueva tabla de frecuencias con la base depurada y


generamos polígono de frecuencias:
tabla_estatura <- fdt(estatura_filtrada$ESTATURA,breaks =
"Sturges",[Link] = T);tabla_estatura

## Class limits f rf rf(%) cf cf(%)


## [1.475,1.526) 10 0.17 16.95 10 16.95
## [1.526,1.576) 8 0.14 13.56 18 30.51
## [1.576,1.626) 7 0.12 11.86 25 42.37
## [1.626,1.677) 6 0.10 10.17 31 52.54
## [1.677,1.727) 9 0.15 15.25 40 67.80
## [1.727,1.778) 5 0.08 8.47 45 76.27
## [1.778,1.828) 14 0.24 23.73 59 100.00

plot(tabla_estatura,type = 'rfp',main = "Distribución de


estatura",xlab = "Estatura",ylab = "Frecuencia relativa",col =
"red",lwd=2)
También generamos la ojiva:
plot(tabla_estatura,type = 'cfpp',main = "Distribución de
estatura",xlab = "Estatura",ylab = "Frecuencia relativa acumulativa
(%)",col = "lightblue",lwd=2)
Podemos concluir que la mayoría de los clientes, el 24%, están en el
rango de estatura de 1.78 metros a 1.83 metros aunque se destaca
que el 17% están en el rango de estatura entre 1.48 a 1.53 metros.

Análisis de la variable “Número de hijos”


Se cambia el título de la variable NUMERO DE HIJOS por [Link]:
library(dplyr)

##
## Adjuntando el paquete: 'dplyr'

## The following objects are masked from 'package:stats':


##
## filter, lag

## The following objects are masked from 'package:base':


##
## intersect, setdiff, setequal, union

t1fe_tabla_taller <- rename(t1fe_tabla_taller,[Link] = "NUMERO DE


HIJOS")
datos_faltantes <- sum([Link](t1fe_tabla_taller$[Link]))
print(datos_faltantes)

## [1] 1
Se crea tabla de frecuencias para la variable hijos aunque primero se
eliminan los datos atípicos de número de hijos, 20 y 54 y un dato vacío:
tabla_filtrada <- t1fe_tabla_taller %>%
filter(![Link] %in% c(20, 54)) %>%
filter(![Link]([Link]))
tabla_limpia <- subset(tabla_filtrada, ![Link]([Link]) & [Link] !=
"")

tabla_frecuencias <- tabla_limpia %>%


count([Link], name = "PERSONA") %>%
filter(![Link]([Link])) # quitar los NA desde la tabla
tabla_frecuencias

## # A tibble: 8 × 2
## [Link] PERSONA
## <chr> <int>
## 1 0 15
## 2 1 12
## 3 2 13
## 4 3 6
## 5 4 5
## 6 5 4
## 7 6 1
## 8 NA 1

Se genera diagrama de barras:


library(dplyr)
library(ggplot2)

ggplot(tabla_frecuencias %>% filter(![Link]([Link])), aes(x =


factor([Link]), y = PERSONA, fill = factor([Link]))) +
geom_bar(stat = "identity") +
geom_text(aes(label = PERSONA), vjust = -0.5) +
labs(x = "Número de hijos", y = "PERSONAS", title = "Gráfico padres
según número de hijos") +
theme_minimal() +
theme([Link] = element_text(hjust = 0.5))
Según la gráfica anterior se puede identificar que: el grupo más
frecuente es el de clientes con 0 hijos (15 personas). Le siguen muy
de cerca los que tienen 2 hijos (13 personas) y 1 hijo (12 personas).
Estos tres grupos concentran a la gran mayoría de tus clientes.
También se puede identificar una tendencia a la baja de las familias
numerosas, pues A partir de los 3 hijos, la cantidad de clientes
disminuye drásticamente. Hay un salto notable baja a solo 6
personas con 3 hijos, y la tendencia sigue bajando progresivamente
hasta encontrar solo a 1 persona con 6 hijos.

Análisis de la variable “Sexo”


Llamamos la función table para validar los datos ingresado para analizarlos:
table(t1fe_tabla_taller$SEXO)

##
## f F hombre HOMBRE m M mujer MUJER
## 4 21 1 1 3 26 1 2

De 59 personas 4 pusieron f miniscula y 21 f mayuscula, 1 puso hombre con


h minuscula y 1 con h mayuascula, 3 pusieron m minuscula y 26 m
mayuascula, 1 puso mujer con m minuscula y 2 mujer con m mayucula, lo
que quiere decir que 28 personas clientes del concesionario son mujeres y
32 clientes con hombres
t1fe_tabla_taller$SEXO <- trimws(tolower(t1fe_tabla_taller$SEXO))
t1fe_tabla_taller$SEXO[t1fe_tabla_taller$SEXO %in% c("hombre",
"masculino")] <- "masculino"
t1fe_tabla_taller$SEXO[t1fe_tabla_taller$SEXO %in% c("mujer",
"femenino")] <- "femenino"

Ahora vamos a unificar los diferentes datos en las dos categorías: Masculino
y Femenino:
t1fe_tabla_taller$SEXO <- trimws(tolower(t1fe_tabla_taller$SEXO))
t1fe_tabla_taller$SEXO[t1fe_tabla_taller$SEXO %in% c("hombre",
"masculino","m")] <- "Masculino"
t1fe_tabla_taller$SEXO[t1fe_tabla_taller$SEXO %in% c("mujer",
"femenino","f")] <- "Femenino"

tabla_sexo <- table(t1fe_tabla_taller$SEXO)


tabla_sexo

##
## Femenino Masculino
## 28 31

La categoría masculino registra una mayor cantidad de clientes en


comparación con femenino, lo que indica que la mayor proporción
de la población analizada corresponde a este grupo.
Esta distribución permite evidenciar una diferencia en la
participación por género dentro del conjunto de datos, lo cual puede
ser relevante para la segmentación del mercado y la toma de
decisiones estratégicas en el concesionario.
n <- sum(tabla_sexo)

# crear etiquetas con porcentaje


etiquetas <- paste(names(tabla_sexo),
"\n",
round((tabla_sexo/n)*100,2),
"%")

# gráfica de torta
pie(tabla_sexo,
labels = etiquetas,
main = "Proporción por sexo",
col = c("pink", "lightblue"))
Se observa que el 52,54% de los clientes corresponde al sexo
masculino (31 personas), mientras que el 47,46% corresponde al
sexo femenino (28 personas).
Esto indica que existe una ligera predominancia del sexo masculino
dentro del conjunto de datos, aunque la diferencia no es
significativa, evidenciando una distribución relativamente
equilibrada entre ambos grupos.

Preguntas de Investigación
Cuántos clientes tienen una mascota
table(t1fe_tabla_taller$MASCOTA) # Tabla de frecuencias

##
## NO SI
## 29 30

t1fe_tabla_taller[[Link](t1fe_tabla_taller$MASCOTA), ]#Encontramos el
lugar donde el dato está vacío

## # A tibble: 1 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
[Link] SALARIO
## <chr> <dbl> <chr> <dbl> <chr> <chr>
<chr> <dbl>
## 1 PERSONA … 20 Masc… 1.78 MAESTRÍA CHEVROLET 0
5200000
## # ℹ 1 more variable: MASCOTA <chr>

mascotas <- sum(t1fe_tabla_taller$MASCOTA == "SI", [Link] = TRUE)


#Realizamos el conteo de los que sí tienen mascota
mascotas

## [1] 30

Se identificó que 30 clientes poseen mascota, lo que representa una


proporción relevante dentro del conjunto de datos. Este resultado
sugiere que una parte significativa de los clientes mantiene hábitos
asociados al cuidado de animales, lo cual podría ser considerado en
estrategias comerciales, por ejemplo, en la oferta de servicios o
productos complementarios.

Cuántos clientes son mayores de 25 años y tienen Maestría


maestria_25 <- t1fe_tabla_taller %>%
dplyr::filter(
EDAD > 25 &
grepl("maestr", tolower(trimws(`NIVEL ESCOLAR`)))
) %>%
nrow()

maestria_25

## [1] 17

Se encontró que 17 clientes mayores de 25 años cuentan con


estudios de maestría, lo que evidencia la presencia de un segmento
con alto nivel educativo dentro de la población analizada.

Cuántos clientes con doctorado ganan más de dos millones de


pesos
Con base en las columnas ya existentes creamos una columna adicional
categorizando de los clientes con Doctorado cuáles ganan más de dos
millones y cuáles ganan menos de dos millones:
tabla_trabajo <- t1fe_tabla_taller %>%
filter(`NIVEL ESCOLAR` == "DOCTORADO") %>%
mutate(categoria_salario = factor(case_when(
SALARIO < 2000000 ~ "Menos de 2 millones",
SALARIO >= 2000000 ~ "Mas de 2 millones")))
tabla_trabajo

## # A tibble: 14 × 10
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
[Link] SALARIO
## <chr> <dbl> <chr> <dbl> <chr> <chr>
<chr> <dbl>
## 1 PERSONA… 30 Feme… 1.6 DOCTORADO BMW 2
900000
## 2 PERSONA… 52 Feme… 1.51 DOCTORADO RENAULT 0
4700000
## 3 PERSONA… 63 Masc… 1.65 DOCTORADO RENAULT 0
5000000
## 4 PERSONA… 30 Feme… 1.51 DOCTORADO AUDI 1
2400000
## 5 PERSONA… 40 Masc… 1.52 DOCTORADO BMW 0
2600000
## 6 PERSONA… 56 Feme… 1.79 DOCTORADO CHEVROLET 2
4000000
## 7 PERSONA… 47 Masc… 1.68 DOCTORADO CHEVROLET 0
5000000
## 8 PERSONA… 41 Masc… 1.68 DOCTORADO AUDI 5
4500000
## 9 PERSONA… 46 Masc… 1.78 DOCTORADO FORD 6
6000000
## 10 PERSONA… 52 Feme… 1.5 DOCTORADO RENAULT 1
4700000
## 11 PERSONA… 62 Masc… 1.65 DOCTORADO RENAULT 1
4000000
## 12 PERSONA… 41 Masc… 1.73 DOCTORADO BMW 0
2600000
## 13 PERSONA… 42 Feme… 1.71 DOCTORADO RENAULT 1
2500000
## 14 PERSONA… 34 Feme… 1.6 DOCTORADO BMW 1
3500000
## # ℹ 2 more variables: MASCOTA <chr>, categoria_salario <fct>

Ahora procedemos a realizar un diagrama de barras para identificar lo


requerido:
ggplot(tabla_trabajo, aes(x = categoria_salario, fill =
categoria_salario)) +
geom_bar() +
geom_text(stat = "count", aes(label = after_stat(count)), vjust = -
0.5) +
labs(
title = "Comparación de salarios de clientes con doctorado",
x = "Categoría Salarial",
y = "Número de Clientes",
fill = "Salario"
) +
theme_minimal()
Como se observa en la gráfica, 14 clientes cuentan con doctorado,
de los cuales solo un cliente gana menos de $ 2.000.000 y los TRECE
(13) clientes restantes ganan mas de $ 2.000.000.

Promedio de salario por cada categoría de Marca de Auto


Procedemos a encontrar los espacios vacíos y a eliminarlos:
t1fe_tabla_taller[[Link](t1fe_tabla_taller$`MARCA DE AUTO`), ] #se
detectan los espacios vacíos y texto en lugar de número

## # A tibble: 2 × 9
## PERSONA EDAD SEXO ESTATURA `NIVEL ESCOLAR` `MARCA DE AUTO`
[Link] SALARIO
## <chr> <dbl> <chr> <dbl> <chr> <chr>
<chr> <dbl>
## 1 PERSONA … 68 Feme… 1.65 MAESTRÍA <NA> 2
3400000
## 2 PERSONA … 68 Feme… 1.65 PROFESIONAL <NA> 3
3400000
## # ℹ 1 more variable: MASCOTA <chr>

tabla_limpia1 <- t1fe_tabla_taller[![Link](t1fe_tabla_taller$`MARCA DE


AUTO`), ] #se eliminan los datos vacíos y con texto en lugar de número
View(tabla_limpia1)
Generamos el gráfico de barras con etiquetas (usando tabla_limpia1
directamente):
ggplot(tabla_limpia1, aes(x = `MARCA DE AUTO`, y = SALARIO, fill =
`MARCA DE AUTO`)) +
geom_bar(stat = "summary", fun = "mean") +
geom_text(stat = "summary", fun = "mean", aes(label =
round(after_stat(y), 2)), vjust = -0.5) +
labs(
title = "Salario promedio por marca de auto",
x = "Marca de Auto",
y = "Salario Promedio",
fill = "Marca de Auto"
) +
theme_minimal()

De la gráfica anterior se puede concluir que los clientes con marca


de auto CHEVROLET y FORD cuentan con el promedio salarial mas
alto, siendo Los clientes de la marca FORD los que cuentan con
mejores ingresos, por otro lado también se puede concluir que los
clientes con menor promedio salarial corresponden a la marca AUDI
y BMW. Para el área de Ventas podríamos conducir a los clientes
con más poder adquisitivo a las marcas CHEVROLET Y FORD y por
ende son clientes potenciales para el concesionario que se deben
fidelizar

También podría gustarte