carpeta <- "C:/Users/usuario/Desktop/Semestre 2-2025/economia_internacional_II/internacional/tipo_de_cambio" Consolidación de Tipo de Cambio BCV desde Múltiples Archivos Excel
Consolidación del tipo de cambio BCV
Para obtener los datos del tipo de cambio oficial del Banco Central de Venezuela debemos de ingresar a la página oficial https://www.bcv.org.ve/estadisticas/tipo-cambio-de-referencia-smc y descargar los documentos necesarios, estos se encuentran en formato .xls, para no tener dificultades a la hora de procesarlos es recomendable guardar de nuevo el documento, cambiar sus propiedades para que se convierta en un libro excel y así quede en formato .xlsx.
Una vez realizado los cambios de formato, se recomienda crear una carpeta con todos los documentos descargados para facilitar el proceso de extracción y limpieza de los datos.
Definimos la ruta de la carpeta de nuestros archivos
Obtener todos los nombres de archivos Excel en esa carpeta
archivos <- list.files(path = carpeta, pattern = "\\.xlsx$", full.names = TRUE)Leer un archivo y extraer la fila de interés
En nuestro caso queremos extrae el precio del dólar (USD), por lo que la fila que nos interesa es la 15.
leer_archivo <- function(archivo) {
hojas <- excel_sheets(archivo)
# Leer cada hoja (fila 15)
datos_por_hoja <- map(hojas, function(hoja) {
df <- read_excel(archivo, sheet = hoja, skip = 14, n_max = 1, col_names = FALSE)
df <- df %>%
mutate(hoja = hoja)
})
# Unir todas las hojas del archivo
datos_archivo <- bind_rows(datos_por_hoja) %>%
mutate(archivo = basename(archivo))
return(datos_archivo)
}Aplicamos la función para el resto de los archivos
todos_los_datos <- map_dfr(archivos, leer_archivo)Renombramos las columnas y limpiamos
La estructura del excel del BCV tiene una particularidad que es de gran importancia, cada hoja esta nombrada con la fecha del tipo de cambio que se publicó, por ejemplo (03012022) por lo que debemos de cambiar el formato para poder extraer esta información.
tabla_final <- todos_los_datos %>%
rename(
moneda = ...1,
pais = ...2,
base = ...3,
referencia = ...4,
compra = ...5,
venta = ...6
) %>%
mutate(
fecha = as.Date(hoja, format = "%d%m%Y")
) %>%
select(fecha, moneda, pais, base, referencia, compra, venta, archivo)Visualizamos la tabla y podemos observar que los datos obtenidos no tienen un orden, así que debemos de ordenar de forma ascendente o descendete.
print(tabla_final)# A tibble: 916 × 8
fecha moneda pais base referencia compra venta archivo
<date> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 2022-03-31 USD E.U.A. 1 1 4.37 4.38 2_1_2a22_smc.xlsx
2 2022-03-30 USD E.U.A. 1 1 4.37 4.38 2_1_2a22_smc.xlsx
3 2022-03-29 USD E.U.A. 1 1 4.36 4.37 2_1_2a22_smc.xlsx
4 2022-03-28 USD E.U.A. 1 1 4.36 4.37 2_1_2a22_smc.xlsx
5 2022-03-25 USD E.U.A. 1 1 4.35 4.36 2_1_2a22_smc.xlsx
6 2022-03-24 USD E.U.A. 1 1 4.33 4.34 2_1_2a22_smc.xlsx
7 2022-03-23 USD E.U.A. 1 1 4.32 4.33 2_1_2a22_smc.xlsx
8 2022-03-22 USD E.U.A. 1 1 4.30 4.31 2_1_2a22_smc.xlsx
9 2022-03-21 USD E.U.A. 1 1 4.29 4.30 2_1_2a22_smc.xlsx
10 2022-03-18 USD E.U.A. 1 1 4.30 4.31 2_1_2a22_smc.xlsx
# ℹ 906 more rows
Organizamos los datos de froma ascendente
tabla_final <- tabla_final %>%
arrange(fecha)
tabla_final# A tibble: 916 × 8
fecha moneda pais base referencia compra venta archivo
<date> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr>
1 2022-01-03 USD E.U.A. 1 1 4.58 4.59 2_1_2a22_smc.xlsx
2 2022-01-04 USD E.U.A. 1 1 4.59 4.60 2_1_2a22_smc.xlsx
3 2022-01-05 USD E.U.A. 1 1 4.59 4.60 2_1_2a22_smc.xlsx
4 2022-01-06 USD E.U.A. 1 1 4.61 4.62 2_1_2a22_smc.xlsx
5 2022-01-07 USD E.U.A. 1 1 4.62 4.64 2_1_2a22_smc.xlsx
6 2022-01-11 USD E.U.A. 1 1 4.63 4.64 2_1_2a22_smc.xlsx
7 2022-01-12 USD E.U.A. 1 1 4.63 4.64 2_1_2a22_smc.xlsx
8 2022-01-13 USD E.U.A. 1 1 4.62 4.64 2_1_2a22_smc.xlsx
9 2022-01-14 USD E.U.A. 1 1 4.62 4.63 2_1_2a22_smc.xlsx
10 2022-01-18 USD E.U.A. 1 1 4.62 4.63 2_1_2a22_smc.xlsx
# ℹ 906 more rows
Realizamos una extracción de los datos que nos interesan
En este caso solo nos interesa mantener la columna de fecha, moneda, compra y venta.
tipo_de_cambio <- tabla_final %>%
select(fecha, moneda, compra, venta)
tipo_de_cambio# A tibble: 916 × 4
fecha moneda compra venta
<date> <chr> <dbl> <dbl>
1 2022-01-03 USD 4.58 4.59
2 2022-01-04 USD 4.59 4.60
3 2022-01-05 USD 4.59 4.60
4 2022-01-06 USD 4.61 4.62
5 2022-01-07 USD 4.62 4.64
6 2022-01-11 USD 4.63 4.64
7 2022-01-12 USD 4.63 4.64
8 2022-01-13 USD 4.62 4.64
9 2022-01-14 USD 4.62 4.63
10 2022-01-18 USD 4.62 4.63
# ℹ 906 more rows
Tabla con el Tipo de Cambio Oficial publicada por el BCV
tipo_de_cambio <- tabla_final %>%
select(fecha, moneda, compra, venta)
# Mostrar tabla interactiva
datatable(
tipo_de_cambio,
options = list(
pageLength = 10, # número de filas visibles por página
autoWidth = TRUE, # ajuste automático de columnas
searching = TRUE, # buscador
ordering = TRUE # ordenar columnas
),
caption = "Tabla interactiva del tipo de cambio (compra y venta por fecha)",
filter = "top" # filtros en la parte superior
)