knitr::opts_chunk$set(echo = TRUE)
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
library(ggplot2)
library(readxl)
Este análisis tiene como objetivo explorar los datos de empresas categorizadas por su tamaño y sector, utilizando variables clave como el Total de Ingreso Operativo y el Número de Empleados. Estas métricas permiten evaluar el desempeño operativo y la estructura laboral de las empresas. A continuación, se detalla la preparación, limpieza de datos y el análisis realizado.
data <- read_excel("C:/Users/gabri/OneDrive/Documentos/Universidad/Septimo semestre/Metodos Cuantitativos/Grandes 2022.xlsx")
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
## • `` -> `...17`
## • `` -> `...18`
## • `` -> `...19`
## • `` -> `...20`
## • `` -> `...21`
## • `` -> `...22`
## • `` -> `...23`
## • `` -> `...24`
## • `` -> `...25`
## • `` -> `...26`
## • `` -> `...27`
## • `` -> `...28`
## • `` -> `...29`
## • `` -> `...30`
## • `` -> `...31`
## • `` -> `...32`
## • `` -> `...33`
## • `` -> `...34`
## • `` -> `...35`
## • `` -> `...36`
## • `` -> `...37`
## • `` -> `...38`
## • `` -> `...39`
## • `` -> `...40`
## • `` -> `...41`
## • `` -> `...42`
## • `` -> `...43`
## • `` -> `...44`
## • `` -> `...45`
## • `` -> `...46`
## • `` -> `...47`
## • `` -> `...48`
## • `` -> `...49`
## • `` -> `...50`
## • `` -> `...51`
## • `` -> `...52`
## • `` -> `...53`
## • `` -> `...54`
## • `` -> `...55`
## • `` -> `...56`
## • `` -> `...57`
## • `` -> `...58`
## • `` -> `...59`
## • `` -> `...60`
## • `` -> `...61`
## • `` -> `...62`
## • `` -> `...63`
## • `` -> `...64`
## • `` -> `...65`
## • `` -> `...66`
## • `` -> `...67`
## • `` -> `...68`
## • `` -> `...69`
## • `` -> `...70`
## • `` -> `...71`
## • `` -> `...72`
## • `` -> `...73`
## • `` -> `...74`
## • `` -> `...75`
## • `` -> `...76`
## • `` -> `...77`
## • `` -> `...78`
## • `` -> `...79`
## • `` -> `...80`
## • `` -> `...81`
## • `` -> `...82`
## • `` -> `...83`
## • `` -> `...84`
## • `` -> `...85`
## • `` -> `...86`
## • `` -> `...87`
## • `` -> `...88`
## • `` -> `...89`
## • `` -> `...90`
## • `` -> `...91`
## • `` -> `...92`
## • `` -> `...93`
## • `` -> `...94`
## • `` -> `...95`
## • `` -> `...96`
## • `` -> `...97`
## • `` -> `...98`
## • `` -> `...99`
## • `` -> `...100`
## • `` -> `...101`
## • `` -> `...102`
## • `` -> `...103`
## • `` -> `...104`
## • `` -> `...105`
## • `` -> `...106`
## • `` -> `...107`
## • `` -> `...108`
## • `` -> `...109`
## • `` -> `...110`
## • `` -> `...111`
## • `` -> `...112`
## • `` -> `...113`
## • `` -> `...114`
## • `` -> `...115`
## • `` -> `...116`
## • `` -> `...117`
## • `` -> `...118`
## • `` -> `...119`
## • `` -> `...120`
## • `` -> `...121`
## • `` -> `...122`
## • `` -> `...123`
## • `` -> `...124`
## • `` -> `...125`
## • `` -> `...126`
## • `` -> `...127`
## • `` -> `...128`
## • `` -> `...129`
data <- data %>% slice(-c(1, 2))
colnames(data) <- as.character(unlist(data[1, ]))
data <- data[-1,-1]
Representa los ingresos generados por las operaciones principales de la empresa. Es una medida fundamental para evaluar el rendimiento y la eficiencia de la empresa. Se calcula de la siguiente manera:
\[ \text{Ingresos operativos} = \text{Utilidad bruta} - \text{Gastos operativos} \]
Escogí esta variable porque permite comparar el tamaño y eficiencia operativa de las empresas, y es una medida directa de su desempeño económico.
# Selección de variables
data_var <- data %>% select("Sector (CIIU Rev.4 A.C.)", "Compañía", "Total Ingreso Operativo", "Número de empleados")
colnames(data_var) <- c("sector", "compañia", "total_ingreso_op", "numero_empleados")
head(data_var)
## # A tibble: 6 × 4
## sector compañia total_ingreso_op numero_empleados
## <chr> <chr> <chr> <chr>
## 1 Fabricación De Productos De La Ref… Refiner… 27856975.920000… 46 (2023)
## 2 Fabricación De Cemento, Cal Y Yeso… Cemento… 11946648.060000… 5,177 (2022)
## 3 Producción De Malta, Elaboración D… Bavaria… 5689093.8099999… 2,781 (2023)
## 4 Fabricación De Productos Farmacéut… Droguer… 4250390.76 6,648 (2023)
## 5 Fabricación De Pinturas, Barnices … Comerci… 4083173.17 18 (2022)
## 6 Elaboración De Bebidas No Alcohóli… Industr… 4045090.5 1,806 (2023)
# Función para limpiar columnas
limpiar_columna <- function(texto) {
texto_con_puntos <- gsub(",", "", texto)
texto_sin_parentesis <- sub(" \\(.*\\)", "", texto_con_puntos)
return(texto_sin_parentesis)
}
# Aplicar la limpieza
data_var$numero_empleados <- limpiar_columna(data_var$numero_empleados)
# Convertir a numérico
data_var$total_ingreso_op <- as.numeric(data_var$total_ingreso_op)
data_var$numero_empleados <- as.numeric(data_var$numero_empleados)
# Filtrar valores no numéricos
data_var <- data_var %>% filter(!is.na(numero_empleados))
head(data_var)
## # A tibble: 6 × 4
## sector compañia total_ingreso_op numero_empleados
## <chr> <chr> <dbl> <dbl>
## 1 Fabricación De Productos De La Ref… Refiner… 27856976. 46
## 2 Fabricación De Cemento, Cal Y Yeso… Cemento… 11946648. 5177
## 3 Producción De Malta, Elaboración D… Bavaria… 5689094. 2781
## 4 Fabricación De Productos Farmacéut… Droguer… 4250391. 6648
## 5 Fabricación De Pinturas, Barnices … Comerci… 4083173. 18
## 6 Elaboración De Bebidas No Alcohóli… Industr… 4045090. 1806
# Resumen de estadísticas
summary_stats <- data_var %>%
summarise(
mean_ingresop = mean(total_ingreso_op, na.rm = TRUE),
mean_empleados = mean(numero_empleados, na.rm = TRUE),
Desv_Ingreso = sd(total_ingreso_op, na.rm = TRUE),
Desv_Empleados = sd(numero_empleados, na.rm = TRUE),
Min_Ingreso = min(total_ingreso_op, na.rm = TRUE),
Max_Ingreso = max(total_ingreso_op, na.rm = TRUE)
)
print(summary_stats)
## # A tibble: 1 × 6
## mean_ingresop mean_empleados Desv_Ingreso Desv_Empleados Min_Ingreso
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 457991. 567. 1182124. 896. 66184.
## # ℹ 1 more variable: Max_Ingreso <dbl>
# Clasificación por categorías
empresas <- data_var %>%
mutate(
categoria = case_when(
total_ingreso_op > 4083173 ~ "Grande",
total_ingreso_op > 1091451 & total_ingreso_op <= 4083173 ~ "Mediana",
total_ingreso_op <= 1091451 ~ "Pequeña",
TRUE ~ NA_character_
)
)
# Resumen por tamaño
segregado_por_tamaño <- empresas %>%
group_by(categoria) %>%
summarise(ingreso = sum(total_ingreso_op), empleados = sum(numero_empleados))
segregado_por_tamaño
## # A tibble: 3 × 3
## categoria ingreso empleados
## <chr> <dbl> <dbl>
## 1 Grande 53826282. 14670
## 2 Mediana 141508979. 144119
## 3 Pequeña 203574586. 335447
##Visualización de Datos ###Histogramas y Boxplots
# Histograma de ingresos
options(scipen = 999)
hist(data_var$total_ingreso_op, main = "Distribución de Ingresos Operativos", xlab = "Ingresos Operativos")
# Boxplot por tamaño
ggplot(empresas, aes(x = categoria, y = numero_empleados)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Distribución del Número de Empleados por Tamaño de Empresa",
x = "Tamaño de Empresa",
y = "Número de Empleados") +
theme_minimal()
ggplot(empresas, aes(x = categoria, y = total_ingreso_op)) +
geom_boxplot(fill = "skyblue") +
labs(title = "Distribución de Ingresos por Tamaño de Empresa",
x = "Tamaño de Empresa",
y = "Total de Ingreso Operativo") +
theme_minimal()
##Agrupación por Sector
# Agrupación por categorías de sector
empresas_agrupadas <- empresas %>%
mutate(categoria_sector = case_when(
grepl("Cultivo|Cría|Extracción", sector, ignore.case = TRUE) ~ "Agricultura y extracción primaria",
grepl("Elaboración|Procesamiento", sector, ignore.case = TRUE) ~ "Alimentos y bebidas",
grepl("Textiles|Prendas|Cuero", sector, ignore.case = TRUE) ~ "Textiles, vestuario y cuero",
TRUE ~ "Otros"
))
# Boxplot por sector
ggplot(empresas_agrupadas, aes(x = categoria_sector, y = total_ingreso_op)) +
geom_boxplot(fill = "skyblue") +
scale_y_log10() +
labs(title = "Distribución de Ingresos por Categoría de Sector (Escala Logarítmica)",
x = "Categoría de Sector",
y = "Total de Ingreso Operativo (Log)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
##Conclusión
El análisis muestra diferencias significativas en el número de empleados e ingresos operativos según el tamaño y sector de las empresas. Las empresas más grandes tienden a concentrar la mayor parte de los ingresos, mientras que los sectores tienen patrones distintos en términos de distribución de ingresos y empleados.