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(lubridate)
## 
## Adjuntando el paquete: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(knitr)
library(kableExtra)
## 
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(stringr)

1.Cree una función, que permita obtener las ventas anuales, trimestrales o mensuales, según se indique en el argumento, dichas ventas podrán ser totales, o por segmento de mercado.

# Cargando base de datos 
load("C:/Users/MINEDUCYT/Downloads/data_parcial_1_2021.RData")
obtener_ventas <- function(df, periodo = c("anual","trimestral","mensual"), segmento = NULL){
  periodo <- match.arg(periodo)
  
  # Asegurar nombres de columnas limpios
  colnames(df) <- str_trim(colnames(df))
  
  # Detectar columna de ventas y segmento
  col_ventas <- intersect(c("Sales","ventas","sale"), colnames(df))
  col_segmento <- intersect(c("Segment","segmento","segment"), colnames(df))
  
  # Crear fecha a partir de año y mes
  df <- df %>% mutate(fecha = as.Date(paste(anio, mes, 1, sep="-")))
  
  # Filtrar segmento si aplica
  if(!is.null(segmento) & length(col_segmento) > 0){
    df <- df %>% filter(.data[[col_segmento]] == segmento)
  }
  
  # Variables de tiempo
  df <- df %>% mutate(
    anio = year(fecha),
    trimestre = quarter(fecha),
    mes = month(fecha)
  )
  
  # Agrupación según periodo
  if(periodo == "anual"){
    df %>% group_by(anio) %>% summarise(ventas_totales = sum(.data[[col_ventas]], na.rm=TRUE), .groups="drop")
  } else if(periodo == "trimestral"){
    df %>% group_by(anio, trimestre) %>% summarise(ventas_totales = sum(.data[[col_ventas]], na.rm=TRUE), .groups="drop")
  } else {
    df %>% group_by(anio, mes) %>% summarise(ventas_totales = sum(.data[[col_ventas]], na.rm=TRUE), .groups="drop")
  }
}
  1.   Con la implementación de dicha función muestre:
  2. Las ventas totales trimestrales, para todos los segmentos.
  1. Las ventas totales anuales para el segmento corporativo.
  2. Las ventas totales mensuales para el segmento consumidor.
# Trimestral todos los segmentos
ventas_trimestrales <- obtener_ventas(ventas, "trimestral")
kable(ventas_trimestrales, caption="Ventas totales trimestrales (todos los segmentos)")
Ventas totales trimestrales (todos los segmentos)
anio trimestre ventas_totales
2015 1 73931.40
2015 2 85874.09
2015 3 142522.61
2015 4 177528.11
2016 1 62357.69
2016 2 87713.37
2016 3 128560.21
2016 4 180804.74
2017 1 92686.37
2017 2 135061.16
2017 3 138056.37
2017 4 234388.65
2018 1 122260.88
2018 2 127558.62
2018 3 193815.84
2018 4 278416.67
# Anual segmento corporativo
ventas_anuales_corporativo <- obtener_ventas(ventas, "anual", segmento = "Corporate")
kable(ventas_anuales_corporativo, caption="Ventas totales anuales – Segmento Corporativo")
Ventas totales anuales – Segmento Corporativo
anio ventas_totales
2015 127797.5
2016 119675.6
2017 204977.3
2018 236043.7
# Mensual segmento consumidor
ventas_mensuales_consumidor <- obtener_ventas(ventas, "mensual", segmento = "Consumer")
kable(ventas_mensuales_consumidor, caption="Ventas totales mensuales – Segmento Consumidor")
Ventas totales mensuales – Segmento Consumidor
anio mes ventas_totales
2015 1 6896.629
2015 2 3167.854
2015 3 11869.304
2015 4 9108.612
2015 5 12815.179
2015 6 25651.556
2015 7 20032.890
2015 8 15423.332
2015 9 59536.826
2015 10 16246.697
2015 11 46228.498
2015 12 35979.425
2016 1 14274.984
2016 2 9269.018
2016 3 17418.890
2016 4 22626.406
2016 5 20792.079
2016 6 12824.504
2016 7 19791.747
2016 8 20509.845
2016 9 38734.313
2016 10 17128.869
2016 11 32423.669
2016 12 39561.971
2017 1 6026.649
2017 2 15800.227
2017 3 24844.991
2017 4 14004.976
2017 5 32174.635
2017 6 23339.851
2017 7 22631.847
2017 8 13312.390
2017 9 38495.128
2017 10 10112.890
2017 11 41104.393
2017 12 49294.989
2018 1 23075.641
2018 2 5208.941
2018 3 35041.522
2018 4 9034.924
2018 5 20624.609
2018 6 20095.308
2018 7 18552.061
2018 8 31346.104
2018 9 43759.903
2018 10 22865.448
2018 11 49566.485
2018 12 49433.526
  1. Cree una función, que permita obtener el top “k” para el o los trimestres “Q” para el o los años “anios”. Los porcentajes deberán presentarse en el formato CA|XX.XX donde CA es la abreviatura de California (encontrará las abreviaturas en el dataframe nombres_estados, incluido en el mismo archivo de ventas), incluya el formato adecuado, con el pie de página personalizable, y el titulo automático, incluyendo la información relevante.
library(dplyr)
library(knitr)
library(kableExtra)

top_k_trimestre <- function(df, nombres_estados, k, Q, anios, pie_pagina = "Fuente: Ventas 2015-2018 (EE.UU.)") {
  
  dat <- df %>%
    filter(trimestre %in% Q, anio %in% anios) %>%
    group_by(estado) %>%
    summarise(ventas_totales = sum(ventas), .groups="drop") %>%
    # Unir con abreviaturas
    left_join(nombres_estados, by = c("estado" = "State")) %>%
    mutate(Etiqueta = paste0(state.abb, "|", round(100*ventas_totales/sum(ventas_totales),2))) %>%
    arrange(desc(ventas_totales)) %>%
    slice_head(n = k) %>%
    select(Estado = estado, Ventas = ventas_totales, `% del periodo` = Etiqueta)
  
  titulo <- paste0("Top ", k, " Ventas – Trimestre(s) ", paste(Q, collapse=","), 
                   " – Año(s) ", paste(anios, collapse=","))
  
  kable(dat, caption = titulo) %>%
    kable_styling(full_width = FALSE) %>%
    add_footnote(pie_pagina)
}

a.Con la implementación de dicha función muestre: i. El top 10 para el segundo trimestre 2, para el periodo 2017-2018 ii. El top 5 para el primero y segundo trimestre, para el periodo 2016-2018

ventas2 <- ventas
names(ventas2)[names(ventas2) == "State"] <- "estado"
names(ventas2)[names(ventas2) == "Sales"] <- "ventas"
names(ventas2)[names(ventas2) == "Segment"] <- "segmento"
# i) Top 10 para Q2, años 2017-2018
top_k_trimestre(
  df = ventas2,
  nombres_estados = nombres_estados,
  k = 10,
  Q = 2,
  anios = 2017:2018,
  pie_pagina = "Nota: % calculado sobre el total de ventas del periodo seleccionado"
)
Top 10 Ventas – Trimestre(s) 2 – Año(s) 2017,2018
Estado Ventas % del periodo
California 55401.969 CA&#124;21.1
New York 32848.328 NY&#124;12.51
Pennsylvania 17322.675 PA&#124;6.6
Texas 15286.247 TX&#124;5.82
New Jersey 14471.846 NJ&#124;5.51
Illinois 12766.575 IL&#124;4.86
Florida 12533.801 FL&#124;4.77
Georgia 11042.780 GA&#124;4.2
Washington 10105.488 WA&#124;3.85
Michigan 9930.884 MI&#124;3.78
a Nota: % calculado sobre el total de ventas del periodo seleccionado
  1. Usando los datos de Comercio Exterior de El Salvador, disponibles en la base de datos preparada en clases, responda las siguientes preguntas: Importante: muestre sus resultados en formato tabular, y asignando los encabezados y pies de página apropiados en cada caso 1- Por cada dólar exportado a la región Suramericana, en el periodo 2018-2019, ¿Cuánto se importo? (resultado por año)
library(dplyr)
library(kableExtra)

# Lista de países de Suramérica
suramerica <- c("Argentina","Bolivia","Brasil","Chile","Colombia",
                "Ecuador","Guyana","Paraguay","Perú","Surinam",
                "Uruguay","Venezuela")

resultado_sudamerica <- data_comercio_exterior %>%
  filter(anio %in% 2018:2019, pais %in% suramerica) %>%
  group_by(anio) %>%
  summarise(
    total_exportaciones = sum(valor_fob, na.rm = TRUE),
    total_importaciones = sum(valor_cif, na.rm = TRUE),
    USD_importado_por_exportado = total_importaciones / total_exportaciones
  )

resultado_sudamerica %>%
  kable("html", 
        col.names = c("Año","Exportaciones FOB (US$)","Importaciones CIF (US$)","Importado por cada USD exportado")) %>%
  kable_styling(full_width = FALSE) %>%
  add_header_above(c(" " = 1, "Comercio Exterior con Suramérica (2018–2019)" = 3)) %>%
  footnote(general = "Fuente: Data comercio exterior El Salvador.")
Comercio Exterior con Suramérica (2018–2019)
Año Exportaciones FOB (US\() </th> <th style="text-align:right;"> Importaciones CIF (US\)) Importado por cada USD exportado
2018 36470946 603775190 16.55496
2019 39215099 651725634 16.61925
Note:
Fuente: Data comercio exterior El Salvador.

2- Calcule el IHH de El Salvador, con México, Estados Unidos y Canadá, durante el periodo 2017-2019, normalizado.

paises_norte <- c("México","Mexico","Estados Unidos","United States","EE.UU.","EE. UU.","Canada","Canadá")

ihh_norte <- data_comercio_exterior %>%
  filter(anio %in% 2017:2019, pais %in% paises_norte) %>%
  group_by(anio, pais) %>%
  summarise(export_fob = sum(valor_fob, na.rm = TRUE), .groups = "drop") %>%
  group_by(anio) %>%
  mutate(participacion = export_fob / sum(export_fob)) %>%
  summarise(
    IHH = sum(participacion^2),
    IHH_normalizado = (IHH - 1/3)/(1 - 1/3)  # Normalización con N=3
  )

ihh_norte %>%
  kable("html", col.names = c("Año","IHH","IHH Normalizado")) %>%
  kable_styling(full_width = FALSE) %>%
  footnote(general = "Fuente: Data comercio exterior El Salvador. IHH normalizado considerando México, EE.UU. y Canadá")
Año IHH IHH Normalizado
2017 0.6030860 0.4046290
2018 0.7748468 0.6622702
2019 0.5804707 0.3707061
Note:
Fuente: Data comercio exterior El Salvador. IHH normalizado considerando México, EE.UU. y Canadá

3- Calcule las exportaciones totales de El Salvador hacia la región de África Oriental, para el periodo 2017-2019 son (en millones de US$)

africa_oriental <- c("Etiopía","Kenia","Tanzania","Uganda","Somalia","Ruanda","Burundi","Sudán del Sur","Djibouti","Comoras","Seychelles","Mauricio")

exp_africa_oriental <- data_comercio_exterior %>%
  filter(anio %in% 2017:2019, pais %in% africa_oriental) %>%
  group_by(anio) %>%
  summarise(export_millones = sum(valor_fob, na.rm = TRUE)/1e6)

exp_africa_oriental %>%
  kable("html", col.names = c("Año","Exportaciones (millones US$)")) %>%
  kable_styling(full_width = FALSE) %>%
  footnote(general = "Fuente: Data comercio exterior El Salvador")
Año Exportaciones (millones US$)
2017 0.1497616
2018 0.0215839
2019 0.0901700
Note:
Fuente: Data comercio exterior El Salvador

4- Obtenga el Saldo de la balanza comercial de El Salvador, con Latinoamérica, para el periodo 2017-2019, (en millones de US$)

latinoamerica <- c("Argentina","Bolivia","Brasil","Chile","Colombia","Ecuador",
                   "Paraguay","Perú","Uruguay","Venezuela","México","Mexico")

saldo_latam <- data_comercio_exterior %>%
  filter(anio %in% 2017:2019, pais %in% latinoamerica) %>%
  group_by(anio) %>%
  summarise(
    saldo_millones = (sum(valor_fob, na.rm = TRUE) - sum(valor_cif, na.rm = TRUE))/1e6
  )

saldo_latam %>%
  kable("html", col.names = c("Año","Saldo Balanza Comercial (millones US$)")) %>%
  kable_styling(full_width = FALSE) %>%
  footnote(general = "Fuente: Data comercio exterior El Salvador")
Año Saldo Balanza Comercial (millones US$)
2017 -1283.124
2018 -1352.817
2019 -1414.262
Note:
Fuente: Data comercio exterior El Salvador