1 + 1[1] 2
Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org.
When you click the Render button a document will be generated that includes both content and the output of embedded code. You can embed code like this:
1 + 1[1] 2
You can add options to executable code like this
[1] 4
The echo: false option disables the printing of code (only output is displayed).
library(DT) library(plotly) library(osmdata) library(tidyverse) library(sf) library(leaflet) library(dplyr) library(tibble) library(stringr)
tipos <- function(data, numero) { columnas <- c(‘amenity’) if (!is.null(data)) { if (‘amenity’ %in% names(data)) { data1 <- data %>% drop_na(name) %>% select(columnas) %>% as.data.frame() %>% .[, 1] } else { data1 <- rep(‘s/c’, numero) } } else { data1 <- NULL }
vec_tipos <- c(data1) %>% replace_na(‘s/c’)
clases <- unique(vec_tipos)[!is.na(unique(vec_tipos))] list(vec_tipos = vec_tipos, clases = clases) }
coords_SfToDf <- function(data) { if (!is.null(data\(osm_points)) { data1 <- data\)osm_points %>% drop_na(name) } else { data1 <- NULL }
if (!is.null(data\(osm_multipolygons)) { data2 <- data\)osm_multipolygons %>% drop_na(name) } else { data2 <- NULL }
if (!is.null(data\(osm_polygons)) { data3 <- data\)osm_polygons %>% drop_na(name) } else { data3 <- NULL }
# Crear vectores de nombre y dirección nombre <- c( paste(data3\(name,
ifelse(!is.na(data3\)addr.housename), data3\(addr.housename, ''),
ifelse(!is.na(data3\)addr:street), data3\(`addr:street`, ''),',',
data3\)addr:city), paste(data1\(name,
ifelse(!is.na(data1\)addr.housename), data1\(addr.housename, ''),
ifelse(!is.na(data3\)addr:street), data3\(`addr:street`,''),',',
data3\)addr:city) )
# Extraer coordenadas if (!is.null(data1)) { # Filtrar solo las filas donde addr:city es “Caracas” esto se hace para poder solo ver los atm de Caracas data1_filtered <- data1 %>% filter(addr:city == “Caracas”)
# Si hay datos filtrados, extraer las coordenadas
if (nrow(data1_filtered) > 0) {
df_point1 <- do.call(rbind, st_geometry(data1_filtered$geometry)) %>%
as_tibble() %>%
setNames(c("long", "lat"))
} else {
df_point1 <- NULL # No hay datos que cumplan la condición
}
} else { df_point1 <- NULL } # View(data2) if (!is.null(data2)) { df_point2 <- do.call(rbind, st_centroid(data2$geometry)) %>% as_tibble() %>% setNames(c(“long”, “lat”)) } else { df_point2 <- NULL }
if (!is.null(data3)) { df_point3 <- do.call(rbind, st_centroid(data3$geometry)) %>% as_tibble() %>% setNames(c(“long”, “lat”)) } else { df_point3 <- NULL }
View(df_point1)
# Combinar resultados df_puntos <- rbind(df_point3, df_point1) %>% cbind(nombre = nombre[1:nrow(.)])
}
atm_ccs1 <- opq(getbb(“Caracas”)) %>% add_osm_feature(“atm”) %>% osmdata_sf()
View(atm_ccs1$osm_points) # Crear df con los puntos y texto popup de mapa df_puntos <- coords_SfToDf(atm_ccs1)
icon_url <- “retiro-de-efectivo.png”
custom_icon <- makeIcon(iconUrl = icon_url, iconWidth = 30, iconHeight = 30, iconAnchorX = 25, iconAnchorY = 40)
bbox_poly <- getbb(“Venezuela, Caracas”, format_out = “sf_polygon”) if (!inherits(bbox_poly, “sf”)) bbox_poly <- st_as_sf(bbox_poly)
leaflet(bbox_poly) %>% addTiles() %>% addPolygons(data = bbox_poly, fillColor = “#AF7595”, fillOpacity = 0.3, color = “#8C2155”, weight = 2) %>% addMarkers(df_puntos\(long, df_puntos\)lat, popup = df_puntos\(nombre, # Popup al hacer clic label = df_puntos\)nombre, # Info al pasar el cursor labelOptions = labelOptions(noHide = FALSE, direction = “auto”), icon = custom_icon)
#_______________________
coords_SfToDf_2 <- function(data) { if (!is.null(data\(osm_points)) { data1 <- data\)osm_points %>% drop_na(name) } else { data1 <- NULL }
if (!is.null(data\(osm_multipolygons)) { data2 <- data\)osm_multipolygons %>% drop_na(name) } else { data2 <- NULL }
if (!is.null(data\(osm_polygons)) { data3 <- data\)osm_polygons %>% drop_na(name) } else { data3 <- NULL }
# Extraer el nombre del banco y dirección nombre <- c( paste(data3\(name), paste(data1\)name) )
direccion <- c( paste(data3\(`addr:street`, ",", data3\)addr:city), paste(data1\(`addr:street`, ",", data1\)addr:city) )
# Extraer coordenadas solo de puntos en Caracas if (!is.null(data1)) { data1_filtered <- data1 %>% filter(addr:city == “Caracas”) if (nrow(data1_filtered) > 0) { df_point1 <- do.call(rbind, st_geometry(data1_filtered$geometry)) %>% as_tibble() %>% setNames(c(“long”, “lat”)) } else { df_point1 <- NULL } } else { df_point1 <- NULL }
if (!is.null(data2)) { df_point2 <- do.call(rbind, st_centroid(data2$geometry)) %>% as_tibble() %>% setNames(c(“long”, “lat”)) } else { df_point2 <- NULL }
if (!is.null(data3)) { df_point3 <- do.call(rbind, st_centroid(data3$geometry)) %>% as_tibble() %>% setNames(c(“long”, “lat”)) } else { df_point3 <- NULL }
# Crear el dataframe final con nombre, dirección y coordenadas df_puntos <- rbind(df_point3, df_point1) %>% cbind(nombre = nombre[1:nrow(.)], direccion = direccion[1:nrow(.)])
return(df_puntos) }
atm_ccs2 <- opq(getbb(“Caracas”)) %>% add_osm_feature(“atm”) %>% osmdata_sf()
df_puntos <- coords_SfToDf_2(atm_ccs2)
df_puntos <- df_puntos %>% mutate(direccion = str_replace(direccion, “, Caracas”, “.”))
df_puntos2 <- df_puntos %>% select(Banco = nombre, Dirección = direccion)
reemplazos <- c( “Rovincial” = “BBVA Provincial”, “rovincial” = “BBVA Provincial”, “Banlus” = “Banplus”, “BBVA cial” = “BBVA Provincial”, “BBVA rovincial” = “BBVA Provincial”, “Edficio Centro Emesarial Caracas” = “Edificio Centro Empresarial Caracas”, “cial” = “BBVA Provincial”, “anco de Venezuela” = “Banco de Venezuela”, “Venezuela” = “Banco de Venezuela”, “anco Agrícola de Venezuela” = “Banco Agrícola de Venezuela”, “anco e Venezuela” = “Banco de Venezuela”, “anco el Sur” = “Banco el Sur”, “anco el Tesoro” = “Banco el Tesoro”, “anco igital los Trabajadores” = “Banco Digital de los Trabajadores”, “anco igital de los Trabajadores” = “Banco Digital de los Trabajadores”, “anco Municial e Crédito Popular” = “Banco Municial de Crédito Popular”, “anco Nacional e Crédito” = “Banco Nacional de Crédito”, “anco Venezolano e Crédito” = “Banco Venezolano de Crédito”, “See del anco Venezolano de Credito” = “Banco Venezolano de Crédito”, “100% anco” = “100% Banco”, “ancamiga” = “Bancamiga”, “ancaribe” = “Bancaribe”, “anco Activo” = “Banco Activo”, “anco Agrícola Venezuela” = “Banco Agrícola Venezuela”, “anco Caroní” = “Banco Caroní”, “anco igital los Trajaores” = “Banco Digital los Trabajadores”, “anco Exterior” = “Banco Exterior”, “anco Fono Común” = “Banco Fondo Común”, “anco Mercantil” = “Banco Mercantil”, “anco Nacional e Créito” = “Banco Nacional de Crédito”, “anco Sofitasa” = “Banco Sofitasa”, “anesco” = “Banesco”, “ancrecer” = “Bancrecer”, “BVA rovincial” = “BBVA Provincial”, “icentenario” = “Banco Bicentenario”, “Ciuad anesco” = “Ciudad Banesco”, “Mi anco” = “Mi Banco”, “See l anco Venezolano de Creito” = “Banco Nacional de Crédito”, “Tesoro” = “Banco del Tesoro”, “Provincial” = “BBVA Provincial”, “BBVA Provinial” = “BBVA Provincial”, “Provincial” = “BBVA Provincial” )
df_puntos <- df_puntos %>% mutate(Banco = str_replace_all(Banco, reemplazos))
tabla_interactiva <- datatable(df_puntos2, options = list( pageLength = 10, autoWidth = TRUE, searchHighlight = TRUE, dom = ‘Bfrtip’, buttons = c(‘copy’, ‘csv’, ‘excel’, ‘pdf’, ‘print’) ), filter = “top”, rownames = FALSE) %>% formatStyle( columns = colnames(df_puntos2), # Aplicar a todas las columnas backgroundColor = ‘#FAF6F6’, # Fondo azul claro color = ‘#1A1B41’, # Texto azul oscuro fontWeight = ‘bold’ # Texto en negrita )
tabla_interactiva
#____________________________
caracas_poly <- opq(“Caracas, Venezuela”) %>% add_osm_feature(key = “boundary”, value = “administrative”) %>% osmdata_sf()
caracas_polygon <- caracas_poly$osm_multipolygons %>% filter(admin_level == “8”) %>% # Filtrar el nivel administrativo adecuado st_geometry() %>% st_union() %>% st_as_sf()
caracas_polygon <- st_transform(caracas_polygon, crs = 4326)
df_calor <- df_puntos %>% select(long, lat) %>% mutate(peso = 1) # Asigna un peso a cada punto
mapa_calor <- leaflet(df_calor) %>% addTiles() %>% addPolygons(data = caracas_polygon, color = “#3A0CA3”, weight = 4, fill = FALSE, opacity = 1) %>% addHeatmap(lng = ~long, lat = ~lat, intensity = ~peso, radius = 20, blur = 10) %>% setView(lng = mean(st_coordinates(st_centroid(caracas_polygon))[,1]), lat = mean(st_coordinates(st_centroid(caracas_polygon))[,2]), zoom = 12) # Centrar el mapa en Caracas
mapa_calor
#ANEXO GRAFICO Y TABLA
atm_ccs1 <- opq(getbb(“Caracas”)) %>% add_osm_feature(“atm”) %>% osmdata_sf()
#veo la información que me extraje del API
#View(atm_ccs1$osm_points)
nuevo_df <- atm_ccs1
#Convierto en una dataframe la data extraida del API nuevo_df <- as.data.frame(nuevo_df\(osm_points) #Esta línea de código utiliza la función is.na() para identificar #los valores NA en la columna "name" de nuevo_df. El operador ! # invierte el resultado de is.na(), de manera que se seleccionan las filas que #no tienen NA en la columna "name". nuevo_df <- nuevo_df[!is.na(nuevo_df\)name), ]
#los bancos y me suma una a una las filas de los n ombres que son iguales.
nuevo_df %>% count(name, sort = TRUE)
#muestro el contador de las filas #view(nuevo_df)
nombres_a_eliminar <- c( “Banco Mercantil”,“Banco Del Tesoro”,“BFC”,“Activo”,“Venezuela”, “Venezuela”,“Provincial”,“Exterior”, “Avenida El Lago”, “Bicentenario”)
nuevo_df_filtrado <- nuevo_df %>% filter(!name %in% nombres_a_eliminar)
nuevo_df_filtrado
conteos <- nuevo_df_filtrado %>% count(name, sort = TRUE)
conteos
datatable(conteos, options = list(pageLength = 10, autoWidth = TRUE)) view(conteos)
fig <- plot_ly(conteos, x = ~name, y = ~n, type = ‘bar’, name = ‘banco’) fig <- fig %>% layout(title = ‘ATM POR BANCOS’, xaxis = list(title = ‘BANCOS’), yaxis = list(title = ‘ATMS’))
fig