Análise - Encontro de Adolescentes com Cristo (EAC)

Configurações iniciais do R.

rm(list=ls()) #limpeza do R

#Pacotes Necessário

library(readxl) #ler arquivos em excel
## Warning: package 'readxl' was built under R version 4.2.3
library(ggplot2) #para gerar gráficos
## Warning: package 'ggplot2' was built under R version 4.2.3
library(ggrepel) #para gerar gráficos
## Warning: package 'ggrepel' was built under R version 4.2.3
library(dplyr) #manipulação de dados 
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## 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(tidyr) #manipulação de dados
## Warning: package 'tidyr' was built under R version 4.2.3
library(writexl) #salvar dados em excel
## Warning: package 'writexl' was built under R version 4.2.3
library(plotly) #gráfico dinâmico
## Warning: package 'plotly' was built under R version 4.2.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.2.3
library(leaflet.extras)
library(geosphere)   # Para calcular distâncias geográficas
library(lpSolve)

Para a análise de alocação ótima, será apresentada então as duas base de dados. A base de dados de inscritos no EAC e a base de dados com a localização dos padrinhos de carro.

#------------- Setando o diretório ------------- #

setwd("C:/Users/vitor/Downloads/EAC SR")

#--------------- Bases de Dados --------------- #

encontristas <- read_excel("C:/Users/vitor/Downloads/EAC SR/INSCRIÇÕES - IV EAC PARÓQUIA SÃO RAFAEL (respostas).xlsx")

padrinhos <- read_excel("C:/Users/vitor/Downloads/EAC SR/PADRINHOS_EAC.xlsx")


# Criar um mapa base
mapa <- leaflet() %>%
  addTiles() %>%  # Adiciona os tiles padrão do OpenStreetMap
  setView(lng = mean(c(padrinhos$LONGITUDE, encontristas$LONGITUDE)), 
          lat = mean(c(padrinhos$LATITUDE, encontristas$LATITUDE)), 
          zoom = 12)

# Adicionar os padrinhos ao mapa
mapa <- mapa %>%
  addCircleMarkers(data = padrinhos, 
                   lat = ~LATITUDE, 
                   lng = ~LONGITUDE, 
                   color = "blue", 
                   radius = 5, 
                   stroke = TRUE, 
                   fillOpacity = 0.8, 
                   popup = ~PADRINHO, 
                   group = "Padrinhos")

# Adicionar os encontristas ao mapa
mapa <- mapa %>%
  addCircleMarkers(data = encontristas, 
                   lat = ~LATITUDE, 
                   lng = ~LONGITUDE, 
                   color = "red", 
                   radius = 5, 
                   stroke = TRUE, 
                   fillOpacity = 0.8, 
                   popup = ~PREFERENCIA_NOME, 
                   group = "Encontristas")

# Adicionar camadas ao mapa
mapa <- mapa %>%
  addLayersControl(overlayGroups = c("Padrinhos", "Encontristas"),
                   options = layersControlOptions(collapsed = FALSE))

# Exibir o mapa
mapa
# Passo 1: Agrupar e contar encontristas por bairro
bairro_counts <- encontristas %>%
  group_by(BAIRRO) %>%
  summarise(Quantidade = n()) %>%
  ungroup() %>%
  mutate(Percentual = Quantidade / sum(Quantidade) * 100)

# Passo 2: Criar o mapa
mapa_bairro <- leaflet() %>%
  addTiles() %>%
  setView(lng = mean(encontristas$LONGITUDE_BAIRRO, na.rm = TRUE), 
          lat = mean(encontristas$LATITUDE_BAIRRO, na.rm = TRUE), 
          zoom = 12)

# Passo 3: Adicionar círculos de acordo com a quantidade de encontristas por bairro
mapa_bairro <- mapa_bairro %>%
  addCircleMarkers(data = bairro_counts, 
                   lat = encontristas$LATITUDE_BAIRRO[match(bairro_counts$BAIRRO, encontristas$BAIRRO)], 
                   lng = encontristas$LONGITUDE_BAIRRO[match(bairro_counts$BAIRRO, encontristas$BAIRRO)], 
                   radius = ~Quantidade / 2,  # Ajuste o tamanho do círculo de acordo com a quantidade
                   color = "red",             # Cor mais viva
                   stroke = TRUE, 
                   fillOpacity = 0.8,          # Aumentar opacidade
                   popup = ~paste(BAIRRO, "<br>Quantidade:", Quantidade, "<br>Percentual:", round(Percentual, 2), "%")) %>%
  addLegend("bottomright", 
            colors = "red", 
            labels = "Quantidade de Encontristas por Bairro", 
            title = "Legenda", 
            opacity = 1)

# Exibir o mapa
mapa_bairro