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\a2002\Documents\Analisis de Datos\Ultimo tema\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 |
| Opciones_Estratégicas |
| Estudios_Mercado |
2. Exploración del contenido de las tablas
2.1 Tabla Estudios de Mercado
SELECT *
FROM Estudios_Mercado
LIMIT 5;
4 records
| 1 |
1 |
Estudio de Demanda en Huichapan |
Se espera un crecimiento moderado con una tendencia
favorable a la expansión. |
2023-05-01 |
| 2 |
2 |
Análisis de Competencia en Tecozautla |
Alta competencia local, requiere una estrategia
diferenciada para el éxito. |
2023-06-15 |
| 3 |
3 |
Estudio de Población en Nopala |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
| 6 |
102 |
Estudio de Infraestructura en Actopan |
Mercado con buen potencial de expansión debido a
mejoras en infraestructura. |
2023-11-29 |
2.2 Tabla Mercados
SELECT *
FROM Mercados
LIMIT 5;
4 records
| 1 |
Huichapan |
50000 |
Media |
1500000 |
0.65 |
| 2 |
Tecozautla |
35000 |
Alta |
1000000 |
0.55 |
| 3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
| 102 |
Actopan |
0 |
Baja |
50000 |
0.75 |
2.3 Tabla Opciones Estratégicas
SELECT *
FROM Opciones_Estratégicas
LIMIT 5;
5 records
| 1 |
1 |
Expansión Total |
2000000 |
3000000 |
0.70 |
| 2 |
1 |
Alianza Estratégica |
1000000 |
2000000 |
0.65 |
| 3 |
1 |
Expansión Parcial |
1200000 |
2500000 |
0.60 |
| 4 |
2 |
Expansión Total |
1500000 |
2500000 |
0.60 |
| 5 |
2 |
Alianza Estratégica |
800000 |
1800000 |
0.55 |
dbExecute(con, "
INSERT OR IGNORE INTO Mercados (Mercado_ID, Nombre_Mercado)
VALUES (102, 'Actopan');
")
## [1] 0
dbExecute(con, "
INSERT OR IGNORE INTO Opciones_Estratégicas
(Mercado_ID, Nombre_Opción, Costo_Opción, Beneficio_Estimado, Probabilidad_Éxito_Opción)
VALUES
(102, 'Expansión', 100000, 50000, 0.8);
")
## [1] 1
##3.1 Insertar datos de Actopan
# Actualizar los valores de Actopan en la tabla Mercados con información estimada
dbExecute(con, "
UPDATE Mercados
SET Tamaño_Mercado = 'Mediano',
Competencia = 'Baja',
Costo_Entrada = 50000,
Probabilidad_Éxito = 0.75
WHERE Nombre_Mercado = 'Actopan';
")
## [1] 1
4 Manejo de tablas con SQL
4.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 |
Estudio de Demanda en Huichapan |
Se espera un crecimiento moderado con una tendencia
favorable a la expansión. |
2023-05-01 |
1 |
Huichapan |
50000 |
Media |
1500000 |
0.65 |
| 2 |
2 |
Análisis de Competencia en Tecozautla |
Alta competencia local, requiere una estrategia
diferenciada para el éxito. |
2023-06-15 |
2 |
Tecozautla |
35000 |
Alta |
1000000 |
0.55 |
| 3 |
3 |
Estudio de Población en Nopala |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
| 6 |
102 |
Estudio de Infraestructura en Actopan |
Mercado con buen potencial de expansión debido a
mejoras en infraestructura. |
2023-11-29 |
102 |
Actopan |
0 |
Baja |
50000 |
0.75 |
4.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";
1 records
| 3 |
3 |
Estudio de Población en Nopala |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
4.3 Consulta cruzada de tablas
-- Unir tablas Estudios_Mercado con Mercados, usando columna Mercado_ID
-- Filtrar para columna Nombre_Mercado == "Huichapan"
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 = "Huichapan";
1 records
| 1 |
1 |
Estudio de Demanda en Huichapan |
Se espera un crecimiento moderado con una tendencia
favorable a la expansión. |
2023-05-01 |
1 |
Huichapan |
50000 |
Media |
1500000 |
0.65 |
4.4 Consulta cruzada de tablas
-- Unir tablas Estudios_Mercado con Mercados, usando columna Mercado_ID
-- Filtrar para columna Nombre_Mercado == "Tecozautla"
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 = "Tecozautla";
1 records
| 2 |
2 |
Análisis de Competencia en Tecozautla |
Alta competencia local, requiere una estrategia
diferenciada para el éxito. |
2023-06-15 |
2 |
Tecozautla |
35000 |
Alta |
1000000 |
0.55 |
4.4 Consulta cruzada de tablas
-- Unir tablas Estudios_Mercado con Mercados, usando columna Mercado_ID
-- Filtrar para columna Nombre_Mercado == "Actopan"
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 = "Actopan";
1 records
| 6 |
102 |
Estudio de Infraestructura en Actopan |
Mercado con buen potencial de expansión debido a
mejoras en infraestructura. |
2023-11-29 |
102 |
Actopan |
Mediano |
Baja |
50000 |
0.75 |
5. Exploración de columnas en una tabla
5.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 |
Descripción |
TEXT |
0 |
NA |
0 |
| 3 |
Resultados |
TEXT |
0 |
NA |
0 |
| 4 |
Fecha_Estudio |
DATE |
0 |
NA |
0 |
5.2 Columnas de tabla Opciones Estrategicas
-- Similar a función str() en R
-- Información necesaria para realizar nuevos registros
PRAGMA table_info(Opciones_Estratégicas);
6 records
| 0 |
Opción_ID |
INTEGER |
0 |
NA |
1 |
| 1 |
Mercado_ID |
INTEGER |
0 |
NA |
0 |
| 2 |
Nombre_Opción |
TEXT |
0 |
NA |
0 |
| 3 |
Costo_Opción |
REAL |
0 |
NA |
0 |
| 4 |
Beneficio_Estimado |
REAL |
0 |
NA |
0 |
| 5 |
Probabilidad_Éxito_Opción |
REAL |
0 |
NA |
0 |
5.3 Columnas de tabla Mercado
-- Similar a función str() en R
-- Información necesaria para realizar nuevos registros
PRAGMA table_info(Mercados);
6 records
| 0 |
Mercado_ID |
INTEGER |
0 |
NA |
1 |
| 1 |
Nombre_Mercado |
TEXT |
0 |
NA |
0 |
| 2 |
Tamaño_Mercado |
INTEGER |
0 |
NA |
0 |
| 3 |
Competencia |
TEXT |
0 |
NA |
0 |
| 4 |
Costo_Entrada |
REAL |
0 |
NA |
0 |
| 5 |
Probabilidad_Éxito |
REAL |
0 |
NA |
0 |
6. 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)
}
## Warning: Column `Tamaño_Mercado`: mixed type, first seen values of type
## integer, coercing other values of type string
## Mercado_ID Nombre_Mercado Tamaño_Mercado Competencia Costo_Entrada
## 1 1 Huichapan 50000 Media 1500000
## 2 2 Tecozautla 35000 Alta 1000000
## 3 3 Nopala 25000 Baja 750000
## 4 102 Actopan 0 Baja 50000
## Probabilidad_Éxito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.75
## Opción_ID Mercado_ID Nombre_Opción Costo_Opción Beneficio_Estimado
## 1 1 1 Expansión Total 2000000 3000000
## 2 2 1 Alianza Estratégica 1000000 2000000
## 3 3 1 Expansión Parcial 1200000 2500000
## 4 4 2 Expansión Total 1500000 2500000
## 5 5 2 Alianza Estratégica 800000 1800000
## Probabilidad_Éxito_Opción
## 1 0.70
## 2 0.65
## 3 0.60
## 4 0.60
## 5 0.55
## Estudio_ID Mercado_ID Descripción
## 1 1 1 Estudio de Demanda en Huichapan
## 2 2 2 Análisis de Competencia en Tecozautla
## 3 3 3 Estudio de Población en Nopala
## 4 6 102 Estudio de Infraestructura en Actopan
## Resultados
## 1 Se espera un crecimiento moderado con una tendencia favorable a la expansión.
## 2 Alta competencia local, requiere una estrategia diferenciada para el éxito.
## 3 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## 4 Mercado con buen potencial de expansión debido a mejoras en infraestructura.
## Fecha_Estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 2023-11-29
7. Cargar los datos de las tablas
# Con esto las tablas ya están por separado como objetos en R
mercados <- dbGetQuery(con, "SELECT * FROM Mercados")
## Warning: Column `Tamaño_Mercado`: mixed type, first seen values of type
## integer, coercing other values of type string
opciones <- dbGetQuery(con, "SELECT * FROM Opciones_Estratégicas")
estudios <- dbGetQuery(con, "SELECT * FROM Estudios_Mercado")
# Imprimir tablas
mercados
## Mercado_ID Nombre_Mercado Tamaño_Mercado Competencia Costo_Entrada
## 1 1 Huichapan 50000 Media 1500000
## 2 2 Tecozautla 35000 Alta 1000000
## 3 3 Nopala 25000 Baja 750000
## 4 102 Actopan 0 Baja 50000
## Probabilidad_Éxito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.75
opciones
## Opción_ID Mercado_ID Nombre_Opción Costo_Opción Beneficio_Estimado
## 1 1 1 Expansión Total 2000000 3000000
## 2 2 1 Alianza Estratégica 1000000 2000000
## 3 3 1 Expansión Parcial 1200000 2500000
## 4 4 2 Expansión Total 1500000 2500000
## 5 5 2 Alianza Estratégica 800000 1800000
## 6 6 2 Expansión Parcial 1000000 2200000
## 7 7 3 Expansión Total 1200000 2000000
## 8 8 3 Alianza Estratégica 600000 1500000
## 9 9 3 Expansión Parcial 800000 1800000
## 10 10 102 Expansión 100000 50000
## 11 11 102 Expansión 100000 50000
## 12 12 102 Expansión 100000 50000
## 13 13 102 Expansión 100000 50000
## 14 14 102 Expansión 100000 50000
## 15 15 102 Expansión 100000 50000
## 16 16 102 Expansión 100000 50000
## 17 17 102 Expansión 100000 50000
## Probabilidad_Éxito_Opción
## 1 0.70
## 2 0.65
## 3 0.60
## 4 0.60
## 5 0.55
## 6 0.50
## 7 0.75
## 8 0.70
## 9 0.65
## 10 0.80
## 11 0.80
## 12 0.80
## 13 0.80
## 14 0.80
## 15 0.80
## 16 0.80
## 17 0.80
estudios
## Estudio_ID Mercado_ID Descripción
## 1 1 1 Estudio de Demanda en Huichapan
## 2 2 2 Análisis de Competencia en Tecozautla
## 3 3 3 Estudio de Población en Nopala
## 4 6 102 Estudio de Infraestructura en Actopan
## Resultados
## 1 Se espera un crecimiento moderado con una tendencia favorable a la expansión.
## 2 Alta competencia local, requiere una estrategia diferenciada para el éxito.
## 3 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## 4 Mercado con buen potencial de expansión debido a mejoras en infraestructura.
## Fecha_Estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 2023-11-29
#8 Desconectar base de datos
# A partir de este paso ya no puedo acceder a la base de datos
dbDisconnect(con)