1. Introducción
El objetivo de este análisis es construir y visualizar un árbol de
decisiones que ayude a “El Mercader de Venecia” a tomar decisiones
estratégicas para expandirse a tres municipios del estado de Hidalgo:
Huichapan, Tecozautla y Nopala.
# Cargamos paquetes necesarios y limpiamos la memoria
rm(list = ls()) # Remueve trabajos previos
# Cargar librerías necesarias
pacman::p_load(RSQLite, DBI, rpart, rpart.plot,
tidyr, janitor, dplyr, ggplot2)
# Quitar notación científica
options(scipen=999)
1.1 Leer la ruta del archivo
# Ruta a la base de datos
db_path <- "arbol_decisiones_expansion.db"
# Establecer la conexión
con <- dbConnect(RSQLite::SQLite(), db_path)
# Imprimir conexión (se llama con)
con
## <SQLiteConnection>
## Path: C:\Users\gus16\OneDrive\Documentos\Tema 4\arbol_decisiones_expansion.db
## Extensions: TRUE
1.2 Obtener lista de tablas disponibles en la base
SELECT name
FROM sqlite_master
WHERE type = "table";
3 records
| Mercados |
| Estudios_Mercado |
| Opciones_Estrategicas |
2. Exploración del contenido de las tablas
2.1 Tabla Estudios de Mercado
SELECT *
FROM Estudios_Mercado
UNION ALL
SELECT 4, 4, 'Análisis de consumo en Chapantongo', "El consumo es favorable para el municipio", '2024-11-29'
LIMIT 4;
4 records
| 1 |
1 |
Análisis de consumo en Huichapan |
2000000 |
Media |
| 2 |
2 |
Análisis de consumo en Tecozautla |
2200000 |
Alta |
| 3 |
3 |
Análisis de consumo en Nopala |
1800000 |
Baja |
| 4 |
4 |
Análisis de consumo en Chapantongo |
2500000 |
Media |
2.2 Tabla Mercados
SELECT *
FROM Mercados
LIMIT 4;
4 records
| 1 |
Huichapan |
Mercado Municipal |
Media |
2024-01-15 |
| 2 |
Tecozautla |
Mercado Central |
Alta |
2024-01-15 |
| 3 |
Nopala |
Mercado Principal |
Baja |
2024-01-15 |
| 4 |
Chapantongo |
Mercado Central |
Media |
2024-01-15 |
2.3 Tabla Opciones Estratégicas
SELECT *
FROM Mercados
LIMIT 5;
INSERT INTO Mercados (ID_Mercado, Nombre_Municipio, Demanda_Poblacional, Nivel_Consumo)
VALUES (3, 'Chapantongo', 20000, 'Favorable');
SELECT *
FROM Mercados
ORDER BY ID_Mercado DESC
LIMIT 5;
4 records
| 1 |
Huichapan |
Mercado Municipal |
Media |
2024-01-15 |
| 2 |
Tecozautla |
Mercado Central |
Alta |
2024-01-15 |
| 3 |
Nopala |
Mercado Principal |
Baja |
2024-01-15 |
| 4 |
Chapantongo |
Mercado Central |
Media |
2024-01-15 |
3 Manejo de tablas con SQL
3.1 Unión de dos tablas con SQL
-- Vamos a unir dos tablas: Estudios de Mercado y Mercados a partir
-- de la columnna Mercado_ID
-- Se usan alias de las tablas con función AS
SELECT estudios_mercado.*, mercado.*
FROM Estudios_Mercado AS estudios_mercado
INNER JOIN Mercados AS mercado
ON estudios_mercado.Mercado_ID = mercado.Mercado_ID;
-- La última línea menciona el nombre de las columnas que se parecen
-- Para acceder a una columna en R se usa $, en SQL se usa .
4 records
| 1 |
1 |
Análisis de consumo en Huichapan |
2000000 |
Media |
1 |
Huichapan |
Mercado Municipal |
Media |
2024-01-15 |
| 2 |
2 |
Análisis de consumo en Tecozautla |
2200000 |
Alta |
2 |
Tecozautla |
Mercado Central |
Alta |
2024-01-15 |
| 3 |
3 |
Análisis de consumo en Nopala |
1800000 |
Baja |
3 |
Nopala |
Mercado Principal |
Baja |
2024-01-15 |
| 4 |
4 |
Análisis de consumo en Chapantongo |
2500000 |
Media |
4 |
Chapantongo |
Mercado Central |
Media |
2024-01-15 |
3.2 Consulta cruzada de tablas
-- Unir tablas Estudios_Mercado con Mercados, usando columna Mercado_ID
-- Filtrar para columna Nombre_Mercado == "Nopala"
SELECT estudios_mercado.*, mercado.*
FROM Estudios_Mercado AS estudios_mercado
INNER JOIN Mercados AS mercado
ON estudios_mercado.Mercado_ID = mercado.Mercado_ID
WHERE mercado.Nombre_Mercado = "Nopala";
4. Exploración de columnas en una tabla
4.1 Columnas de tabla Estudios de Mercado
-- Similar a función str() en R
-- Información necesaria para realizar nuevos registros
PRAGMA table_info(Estudios_Mercado);
5 records
| 0 |
Estudio_ID |
INTEGER |
0 |
NA |
1 |
| 1 |
Mercado_ID |
INTEGER |
0 |
NA |
0 |
| 2 |
Nombre_Estudio |
TEXT |
0 |
NA |
0 |
| 3 |
Presupuesto |
DECIMAL(10,2) |
0 |
NA |
0 |
| 4 |
Resultados |
TEXT |
0 |
NA |
0 |
5. Vista previa de los datos en R
# Ejemplo de programación en R
# Guardar lista de tablas en un objeto llamado tables
# Vamos a leer las tablas completas porque no son muy grandes
tables <- dbGetQuery(con, "SELECT name FROM sqlite_master WHERE type = 'table';")$name
# Loop para tener vista previa el contenido de cada tabla
for (table in tables){
my_query <- paste("SELECT * FROM", table, "LIMIT 5")
data_table <- dbGetQuery(con, my_query)
print(data_table)
}
## Mercado_ID Municipio Nombre_Mercado Competencia Fecha
## 1 1 Huichapan Mercado Municipal Media 2024-01-15
## 2 2 Tecozautla Mercado Central Alta 2024-01-15
## 3 3 Nopala Mercado Principal Baja 2024-01-15
## 4 4 Chapantongo Mercado Central Media 2024-01-15
## Estudio_ID Mercado_ID Nombre_Estudio Presupuesto
## 1 1 1 Análisis de consumo en Huichapan 2000000
## 2 2 2 Análisis de consumo en Tecozautla 2200000
## 3 3 3 Análisis de consumo en Nopala 1800000
## 4 4 4 Análisis de consumo en Chapantongo 2500000
## Resultados
## 1 Media
## 2 Alta
## 3 Baja
## 4 Media
## Opcion_ID Mercado_ID Tipo_Expansion Inversion_Inicial Beneficio_Esperado
## 1 1 1 Expansión Total 1500000 3000000
## 2 2 1 Alianza Estratégica 800000 1800000
## 3 3 1 Expansión Parcial 1000000 2200000
## 4 4 2 Expansión Total 1500000 3000000
## 5 5 2 Alianza Estratégica 800000 1800000
## Probabilidad_Exito
## 1 0.70
## 2 0.80
## 3 0.75
## 4 0.70
## 5 0.80