library(foreign)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(stringr)
ruta <- "Exportaciones"
enero <- read.dta(paste(ruta, "Enero.dta", sep = "/"))
febrero <- read.dta(paste(ruta, "Febrero.dta", sep = "/"))
marzo <- read.dta(paste(ruta, "Marzo.dta", sep = "/"))
abril <- read.dta(paste(ruta, "Abril.dta", sep = "/"))
mayo <- read.dta(paste(ruta, "Mayo.dta", sep = "/"))
junio <- read.dta(paste(ruta, "Junio.dta", sep = "/"))
julio <- read.dta(paste(ruta, "Julio.dta", sep = "/"))
agosto <- read.dta(paste(ruta, "Agosto.dta", sep = "/"))
septiembre <- read.dta(paste(ruta, "Septiembre.dta", sep = "/"))
octubre <- read.dta(paste(ruta, "Octubre.dta", sep = "/"))
noviembre <- read.dta(paste(ruta, "Noviembre.dta", sep = "/"))
diciembre <- read.dta(paste(ruta, "Diciembre.dta", sep = "/"))
export <- rbind(enero, febrero, marzo, abril, mayo, junio, julio, agosto, 
                septiembre, octubre, noviembre, diciembre)
rm(enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, 
   noviembre, diciembre, ruta)
names(export) <- names(export) %>% tolower()
names(export)[15] <- "posicion_arancelaria"
df_vias <- data.frame(cod = 1:9, vía = c("MARITIMO", "FERREO", "TERRESTRE", 
                    "AEREO", "CORREO", "MULTIMODAL", 
                    "INSTALACIONES DE TRANSPORTE FIJAS (TUBERIAS, CABLE, ETC.)", 
                    "VIAS NAVEGABLES INTERIORES", "OTRO MODO DE TRANSPORTE"))
df_vias$vía <- df_vias$vía %>% str_to_title()
df_puestos_control <- data.frame(cod = c("AXM", "BAQ", "BOG", "BGA", 
                                                 "CLO", "CTG", "CUC", "MZL", 
                                                 "MDE", "PEI", "SMR", "RCH", 
                                                 "ADZ", "AUC", "BUN", "CAR", 
                                                 "IPI", "LET", "MAI", "TCO",
                                                 "TRB", "PCR", "INI", "YOP", 
                                                 "PUU", "VUP", "PA_", "CVE", "MAM"), 
            lugar = c("ARMENIA", "BARRANQUILLA", "BOGOTA", "BUCARAMANGA", "CALI", 
                      "CARTAGENA", "CUCUTA", "MANIZALES", "MEDELLIN", "PEREIRA", 
                      "SANTA MARTA", "RIOHACHA", "SAN ANDRES", "ARAUCA", 
                      "BUENAVENTURA", "CARTAGO", "IPIALES", "LETICIA", "MAICAO", 
                      "TUMACO", "URABA", "PUERTO CARRENO", "INIRIDA", "YOPAL", 
                      "PUERTO ASIS", "VALLEDUPAR", "PAMPLONA", "OLEODUCTO COVEÑAS", 
                      "MAMONAL"))
df_puestos_control$lugar <- df_puestos_control$lugar %>% str_to_title()

df_cap27 <- data.frame(partida_arancelaria = c("2701", "2702", "2703", "2704", 
                    "2705", "2706", "2707", "2708", "2709", "2710", "2711", 
                    "2712", "2713", "2714", "2715", "2716"),
  descripcion = c("Hulla (carbón); briquetas y combustibles sólidos similares",
    "Lignitos, incluso aglomerados (excepto azabache)",
    "Turba, incluso aglomerada",
    "Coques y semicoques de hulla, lignito o turba; carbón de retorta",
    "Gas de hulla, gas de agua, gas pobre y gases similares",
    "Alquitranes de hulla, lignito o turba y demás alquitranes minerales",
    "Aceites y productos de la destilación de alquitranes de hulla de alta temperatura",
    "Brea y coque de brea de alquitrán de hulla u otros alquitranes minerales",
    "Aceites crudos de petróleo o de mineral bituminoso",
    "Aceites de petróleo, excepto crudos (refinados); preparaciones n.e.p.",
    "Gas de petróleo y demás hidrocarburos gaseosos",
    "Vaselina; parafina, ceras de petróleo y demás ceras minerales",
    "Coque de petróleo, betún de petróleo y demás residuos de aceites de petróleo",
    "Betunes y asfaltos naturales; pizarras y arenas bituminosas; rocas asfálticas",
    "Mezclas bituminosas a base de asfalto o betún naturales, de petróleo, etc.",
    "Energía eléctrica"))
posicion_arancelaria_chr <- export$posicion_arancelaria %>% str_pad(width = 10, 
                                                                    side = "left", 
                                                                    pad = "0")
capitulo <- str_sub(posicion_arancelaria_chr, 1, 2)
partida_arancelaria <- str_sub(posicion_arancelaria_chr, 1, 4)
fob27 <- export %>%
  mutate(partida_arancelaria = posicion_arancelaria %>%
           str_pad(width = 10, side = "left", pad = "0") %>%
           str_sub(start = 1, end = 4)) %>%
  filter(str_starts(partida_arancelaria, "27")) %>%
  group_by(partida_arancelaria) %>%
  summarise(fob = round(sum(as.numeric(fobdol), na.rm = TRUE) / 1e6, 2), .groups = "drop") %>%
  arrange(desc(fob))
## Warning: There were 13 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `fob = round(sum(as.numeric(fobdol), na.rm = TRUE)/1e+06, 2)`.
## ℹ In group 1: `partida_arancelaria = "2701"`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 12 remaining warnings.
energia <- fob27 %>%
  left_join(df_cap27, by = "partida_arancelaria") %>%
  select(partida = partida_arancelaria, descripcion, fobdol = fob)
knitr::kable(energia, caption = "Exportación de energía en millones de dolares FOB")
Exportación de energía en millones de dolares FOB
partida descripcion fobdol
2709 Aceites crudos de petróleo o de mineral bituminoso 2395.86
2701 Hulla (carbón); briquetas y combustibles sólidos similares 990.49
2710 Aceites de petróleo, excepto crudos (refinados); preparaciones n.e.p. 449.34
2704 Coques y semicoques de hulla, lignito o turba; carbón de retorta 232.41
2716 Energía eléctrica 113.60
2713 Coque de petróleo, betún de petróleo y demás residuos de aceites de petróleo 57.12
2712 Vaselina; parafina, ceras de petróleo y demás ceras minerales 3.18
2707 Aceites y productos de la destilación de alquitranes de hulla de alta temperatura 0.68
2714 Betunes y asfaltos naturales; pizarras y arenas bituminosas; rocas asfálticas 0.62
2715 Mezclas bituminosas a base de asfalto o betún naturales, de petróleo, etc. 0.59
2706 Alquitranes de hulla, lignito o turba y demás alquitranes minerales 0.28
2711 Gas de petróleo y demás hidrocarburos gaseosos 0.03
2708 Brea y coque de brea de alquitrán de hulla u otros alquitranes minerales 0.02
2702 Lignitos, incluso aglomerados (excepto azabache) 0.01
2703 Turba, incluso aglomerada 0.00
petroleo <- c("2709","2710","2711")
salida <- sum(fob27[names(fob27) %in% petroleo])
salida <- fob27 %>%
  filter(partida_arancelaria %in% petroleo) %>%
  summarise(total = sum(fob)) %>%
  pull(total)
cat("Exportaciones petróleo: ", salida, "millones de dólares.")
## Exportaciones petróleo:  2845.23 millones de dólares.
temporales <- c(2, 4, 201, 202, 301:310, 403, 701)
export <- export %>% filter(!(modad %in% temporales))
res_xvia <- export %>% 
  group_by(via) %>% 
  summarise(exportaciones = round(sum(as.numeric(fobdol), na.rm = TRUE) / 1e6, 2))
## Warning: There were 10 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `exportaciones = round(sum(as.numeric(fobdol), na.rm =
##   TRUE)/1e+06, 2)`.
## ℹ In group 1: `via = 0`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 9 remaining warnings.
names(res_xvia) <- names(res_xvia) %>% tolower()
res_xvia$via <- res_xvia$via %>% as.integer()
res_xvia <- res_xvia %>% left_join(df_vias, by = c("via" = "cod")) %>% 
    relocate(vía, .after = via) %>% 
    select(-via)
res_xvia$prop <- res_xvia$exportaciones %>% proportions()*100
res_xvia$prop <- res_xvia$prop %>% round(2)
salida <- res_xvia %>% arrange(desc(exportaciones))
names(salida) <- names(salida) %>% str_to_title()
knitr::kable(salida, caption = "Exportaciones por vía de salida. Millones de dólares FOB.")
Exportaciones por vía de salida. Millones de dólares FOB.
Vía Exportaciones Prop
NA 7551.26 64.60
Aereo 1425.23 12.19
Ferreo 922.82 7.89
Multimodal 641.38 5.49
Maritimo 576.25 4.93
Vias Navegables Interiores 564.62 4.83
Correo 6.71 0.06
Terrestre 0.88 0.01
Instalaciones De Transporte Fijas (Tuberias, Cable, Etc.) 0.00 0.00
Otro Modo De Transporte 0.00 0.00
maritima <- export %>% filter(via == 1) %>%
  group_by(cod_sal) %>%
  summarise(exportaciones = round(sum(as.numeric(fobdol), na.rm = TRUE) / 1e6, 2))
## Warning: There were 13 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `exportaciones = round(sum(as.numeric(fobdol), na.rm =
##   TRUE)/1e+06, 2)`.
## ℹ In group 1: `cod_sal = "AXM"`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 12 remaining warnings.
maritima <- maritima %>% left_join(df_puestos_control, by = c("cod_sal" = "cod"))
maritima$prop <- maritima$exportaciones %>% proportions()*100
maritima$prop <- maritima$prop %>% round(2)
salida <- maritima %>% relocate(lugar) %>%
  arrange(desc(exportaciones))
names(salida) <- names(salida) %>% str_to_title()
knitr::kable(salida, caption = "Puertos de salida maritimos. Millones de dólares FOB.")
Puertos de salida maritimos. Millones de dólares FOB.
Lugar Cod_sal Exportaciones Prop
Santa Marta SMR 121.61 21.10
Cartagena CTG 114.80 19.92
Riohacha RCH 76.22 13.23
Bogota BOG 71.08 12.34
Barranquilla BAQ 65.73 11.41
Medellin MDE 57.95 10.06
Buenaventura BUN 39.81 6.91
Cali CLO 17.26 3.00
Uraba TRB 11.06 1.92
Bucaramanga BGA 0.49 0.09
Pereira PEI 0.22 0.04
Armenia AXM 0.01 0.00
Tumaco TCO 0.00 0.00
aerea <- export %>% filter(via == 4) %>%
  group_by(cod_sal) %>%
  summarise(exportaciones = round(sum(as.numeric(fobdol), na.rm = TRUE) / 1e6, 2))
## Warning: There were 16 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `exportaciones = round(sum(as.numeric(fobdol), na.rm =
##   TRUE)/1e+06, 2)`.
## ℹ In group 1: `cod_sal = "BAQ"`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 15 remaining warnings.
aerea <- aerea %>% left_join(df_puestos_control, by = c("cod_sal" = "cod"))
aerea$prop <- aerea$exportaciones %>% proportions()*100
aerea$prop <- aerea$prop %>% round(2)
salida <- aerea %>% select(-cod_sal) %>% relocate(lugar) %>%
  arrange(desc(exportaciones))
names(salida) <- names(salida) %>% str_to_title()
knitr::kable(salida, caption = "Puertos de salida aéreos. Millones de dólares FOB.")
Puertos de salida aéreos. Millones de dólares FOB.
Lugar Exportaciones Prop
Buenaventura 442.31 31.03
Santa Marta 328.27 23.03
Cartagena 321.72 22.57
Bogota 105.55 7.41
Barranquilla 94.77 6.65
Riohacha 83.37 5.85
Uraba 34.47 2.42
Medellin 12.09 0.85
Cali 1.91 0.13
Ipiales 0.67 0.05
Maicao 0.06 0.00
Bucaramanga 0.04 0.00
Cucuta 0.00 0.00
Leticia 0.00 0.00
Pereira 0.00 0.00
Tumaco 0.00 0.00