# Purpose: Showing the location of gender based violence (GBV) Services in Rohingya Refugee Camps in Cox's Bazar, Bangladesh
# Author: Proloy Barua (gtpb2008@gmail.com)
# data source: "Location of Rohingya Refugees in Cox's Bazar as of 28 February 2021 sourced from RRRC-UNHCR Family Counting Exercise Data"
# data source url: "https://data.humdata.org/dataset/site-location-of-rohingya-refugees-in-cox-s-bazar/resource/d947b032-aa5b-4404-9fe9-9cb7c3ac93cf"

# Clean up everything
rm(list = ls())
# setting path of working directory
setwd("F:/Maps")
# Checking r-version
print(version)
##                _                           
## platform       x86_64-w64-mingw32          
## arch           x86_64                      
## os             mingw32                     
## system         x86_64, mingw32             
## status                                     
## major          4                           
## minor          0.3                         
## year           2020                        
## month          10                          
## day            10                          
## svn rev        79318                       
## language       R                           
## version.string R version 4.0.3 (2020-10-10)
## nickname       Bunny-Wunnies Freak Out
## START

## Loading packages
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.4
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.3     v purrr   0.3.4
## v tibble  3.0.4     v dplyr   1.0.2
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(leaflet)
library(htmltools)
library(leafpop)
library(purrr)
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
library(reactable)

## Load Data
rohingya_camps <- read_csv("20210318_location_fce_rrrc_unhcr_population-registration_public.csv")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   New_Camp_SSID = col_character(),
##   New_Camp_Name = col_character(),
##   Site_Name_Alias = col_character(),
##   `Settlement Type` = col_character(),
##   District = col_character(),
##   Upazila = col_character(),
##   Union = col_character(),
##   Geo_Code = col_double(),
##   Total_HH = col_double(),
##   Total_Individuals = col_double(),
##   Latitude = col_double(),
##   Longitude = col_double()
## )
outline <- rohingya_camps[chull(rohingya_camps$Longitude, rohingya_camps$Latitude), ]
rohingya_camps_all <- read_csv("210228_iscg_4w_data.csv")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   .default = col_character(),
##   no = col_double(),
##   project_title = col_logical(),
##   project_code = col_logical(),
##   measuring_units = col_logical(),
##   quantity_planned = col_logical(),
##   quantity_achieved = col_logical(),
##   reached_total_beneficiaries = col_logical(),
##   reached_total_beneficiaries_male_hhh = col_logical(),
##   reached_total_beneficiaries_female_hhh = col_logical(),
##   reached_total_individuals = col_double(),
##   reached_total_female_individuals = col_double(),
##   reached_total_male_individuals = col_double(),
##   total_girls_beneficiaries_below_18 = col_double(),
##   total_boys_beneficiaries_below_18 = col_double(),
##   total_women_beneficiaries_18_59 = col_double(),
##   total_men_beneficiaries_18_59 = col_double(),
##   total_elderly_women_beneficiaries_above_59 = col_double(),
##   total_elderly_men_beneficiaries_above_59 = col_double(),
##   total_beneficiaries_with_unknown_sex_and_age = col_logical(),
##   division_code = col_double()
##   # ... with 3 more columns
## )
## i Use `spec()` for the full column specifications.
## Warning: 11662 parsing failures.
##  row               col           expected     actual                      file
## 1543 measuring_units   1/0/T/F/TRUE/FALSE Points     '210228_iscg_4w_data.csv'
## 1544 measuring_units   1/0/T/F/TRUE/FALSE Complaints '210228_iscg_4w_data.csv'
## 1544 quantity_achieved 1/0/T/F/TRUE/FALSE 7          '210228_iscg_4w_data.csv'
## 1545 measuring_units   1/0/T/F/TRUE/FALSE Complaints '210228_iscg_4w_data.csv'
## 1545 quantity_achieved 1/0/T/F/TRUE/FALSE 7          '210228_iscg_4w_data.csv'
## .... ................. .................. .......... .........................
## See problems(...) for more details.
rohingya_camps_gbv <- dplyr::filter(rohingya_camps_all, sector_sub_sec_assistance == "GBV" & type_of_beneficiaries == "Refugee")
rohingya_camps_gbv <- rohingya_camps_gbv %>%
  dplyr::group_by(camp_village_location_name) %>%
  dplyr::summarise(
    reached_total_individuals = sum(reached_total_individuals, na.rm = FALSE),
    reached_total_female_individuals = sum(reached_total_female_individuals, na.rm = FALSE),
    reached_total_male_individuals = sum(reached_total_male_individuals, na.rm = FALSE),
    total_girls_beneficiaries_below_18 = sum(total_girls_beneficiaries_below_18, na.rm = FALSE),
    total_boys_beneficiaries_below_18 = sum(total_boys_beneficiaries_below_18, na.rm = FALSE),
    total_women_beneficiaries_18_59 = sum(total_women_beneficiaries_18_59, na.rm = FALSE),
    total_men_beneficiaries_18_59 = sum(total_men_beneficiaries_18_59, na.rm = FALSE),
    total_elderly_women_beneficiaries_above_59 = sum(total_elderly_women_beneficiaries_above_59, na.rm = FALSE),
    total_elderly_men_beneficiaries_above_59 = sum(total_elderly_men_beneficiaries_above_59, na.rm = FALSE),
    no_implementing_partner = sum(implementing_partner = n_distinct(implementing_partner, na.rm = FALSE))
  ) %>%
  ungroup()
## `summarise()` ungrouping output (override with `.groups` argument)
# Filtering data by gender based violence (GBV) services
rohingya_camps_gbv <- dplyr::filter(rohingya_camps_gbv, !camp_village_location_name %in% c("Transit Site"))
# saving data in local directory
write.csv(rohingya_camps_gbv, "rohingya_camps_gbv.csv")

# Merging two data sets
gbv_camps <- dplyr::inner_join(rohingya_camps_gbv, rohingya_camps, by = c("camp_village_location_name" = "New_Camp_Name"))
# see variables in vector form
dput(names(gbv_camps))
## c("camp_village_location_name", "reached_total_individuals", 
## "reached_total_female_individuals", "reached_total_male_individuals", 
## "total_girls_beneficiaries_below_18", "total_boys_beneficiaries_below_18", 
## "total_women_beneficiaries_18_59", "total_men_beneficiaries_18_59", 
## "total_elderly_women_beneficiaries_above_59", "total_elderly_men_beneficiaries_above_59", 
## "no_implementing_partner", "New_Camp_SSID", "Site_Name_Alias", 
## "Settlement Type", "District", "Upazila", "Union", "Geo_Code", 
## "Total_HH", "Total_Individuals", "Latitude", "Longitude")
# keeping necessary variables
gbv_camps <- dplyr::select(
  gbv_camps, camp_village_location_name, reached_total_individuals,
  reached_total_female_individuals, reached_total_male_individuals,
  total_girls_beneficiaries_below_18, total_boys_beneficiaries_below_18,
  total_women_beneficiaries_18_59, total_men_beneficiaries_18_59,
  total_elderly_women_beneficiaries_above_59, total_elderly_men_beneficiaries_above_59,
  no_implementing_partner, Total_HH, Total_Individuals, Latitude, Longitude
)
# Saving data in local directory
write.csv(gbv_camps, "rohingya_camps_gbv_hh.csv")
# Creating HTML data table
reactable::reactable(gbv_camps, searchable = TRUE, sortable = TRUE)
# Creating a customize title
tag.map.title <- tags$style(HTML("
  .leaflet-control.map-title { 
    transform: translate(-50%,20%);
    position: fixed !important;
    left: 50%;
    text-align: center;
    padding-left: 10px; 
    padding-right: 10px; 
    background: rgba(255,255,255,0.75);
    font-weight: bold;
    font-size: 16px;
  }
"))

title <- tags$h2(
  tag.map.title, HTML("Location of GBV Services in Rohingya Refugee Camps in Cox's Bazar, Bangladesh")
)
## Add Tiles
rohingya_camps %>%
  leaflet() %>%
  addTiles() %>%
  fitBounds(lng1 = min(rohingya_camps$Longitude), lat1 = min(rohingya_camps$Latitude), lng2 = max(rohingya_camps$Longitude), lat2 = max(rohingya_camps$Latitude)) %>%
  addPolygons(data = outline, lng = outline$Longitude, lat = outline$Latitude, fill = FALSE, weight = 5, color = "red", group = "Virtual boundary") %>%
  addCircleMarkers(
    lng = rohingya_camps$Longitude, lat = rohingya_camps$Latitude, group = "Rohingya camps",
    radius = 10, color = "red", opacity = 1, weight = 2,
    popup = paste0(
      "New Camp Name: ", "<strong>", '<span style="color:red">',
      rohingya_camps$New_Camp_Name, "</strong>", "</span>",
      "<br>", "Settlement Type: ", "<strong>", '<span style="color:red">',
      rohingya_camps$`Settlement Type`, "</strong>", "</span>",
      "<br>", "District Name: ", "<strong>", '<span style="color:red">', rohingya_camps$District, "</strong>", "</span>",
      "<br>", "Sub-district Name: ", "<strong>", '<span style="color:red">', rohingya_camps$Upazila, "</strong>", "</span>",
      "<br>", "Union Name: ", "<strong>", '<span style="color:red">', rohingya_camps$Union, "</strong>", "</span>",
      "<br>", "No. of total household in this camp: ", "<strong>", '<span style="color:blue">', rohingya_camps$Total_HH, "</strong>", "</span>",
      "<br>", "No. of total individuals in this camp: ", "<strong>", '<span style="color:blue">', rohingya_camps$Total_Individuals, "</strong>", "</span>",
      "<br>", "Data source <span style='color:blue'> (as of Feb 2021): <a href='https://data.humdata.org/dataset/site-location-of-rohingya-refugees-in-cox-s-bazar/resource/d947b032-aa5b-4404-9fe9-9cb7c3ac93cf'>RRRC-UNHCR </a>",
      "<br>"
    )
  ) %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "World Imagery") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
  addProviderTiles(providers$OpenStreetMap, group = "Open SM") %>%
  addGraticule(group = "Graticule", interval = 0.02, style = list(color = "#FF0000", weight = 1)) %>%
  addCircleMarkers(
    lng = gbv_camps$Longitude, lat = gbv_camps$Latitude, group = "Rohingya camps with GBV services",
    radius = 5, color = "blue", opacity = 2, weight = 2,
    popup = paste0(
      "New Camp Name: ", "<strong>", '<span style="color:red">', gbv_camps$camp_village_location_name, "</strong>", "</span>",
      "<br>", "Settlement Type: ", "<strong>", '<span style="color:red">', gbv_camps$`Settlement Type`, "</strong>", "</span>",
      "<br>", "District Name: ", "<strong>", '<span style="color:red">', gbv_camps$District, "</strong>", "</span>",
      "<br>", "Sub-district Name: ", "<strong>", '<span style="color:red">', gbv_camps$Upazila, "</strong>", "</span>",
      "<br>", "Union Name: ", "<strong>", '<span style="color:red">', gbv_camps$Union, "</strong>", "</span>",
      "<br>", "No. of total household in this camp: ", "<strong>", '<span style="color:blue">', gbv_camps$Total_HH, "</strong>", "</span>",
      "<br>", "No. of total individuals in this camp: ", "<strong>", '<span style="color:blue">', gbv_camps$Total_Individuals, "</strong>", "</span>",
      "<br>", "Total individuals reached by GBV in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$reached_total_individuals, "</strong>", "</span>",
      "<br>", "Total females reached by GBV in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$reached_total_female_individuals, "</strong>", "</span>",
      "<br>", "Total males reached by GBV in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$reached_total_male_individuals, "</strong>", "</span>",
      "<br>", "Total girls GBV beneficiaries <18 in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$total_girls_beneficiaries_below_18, "</strong>", "</span>",
      "<br>", "Total boys GBV beneficiaries <18 in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$total_boys_beneficiaries_below_18, "</strong>", "</span>",
      "<br>", "Total women GBV benef. 18-59 in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$total_women_beneficiaries_18_59, "</strong>", "</span>",
      "<br>", "Total men GBV beneficiaries 18-59 in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$total_men_beneficiaries_18_59, "</strong>", "</span>",
      "<br>", "Total women GBV beneficiaries >59 in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$total_elderly_women_beneficiaries_above_59, "</strong>", "</span>",
      "<br>", "Total men GBV beneficiaries >59 in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$total_elderly_men_beneficiaries_above_59, "</strong>", "</span>",
      "<br>", "No of GBV implementing partner in this camp: ", "<strong>", '<span style="color:green">', gbv_camps$no_implementing_partner, "</strong>", "</span>",
      "<br>", "Data source <span style='color:blue'> (as of Feb 2021): <a href='https://data.humdata.org/dataset/site-location-of-rohingya-refugees-in-cox-s-bazar/resource/d947b032-aa5b-4404-9fe9-9cb7c3ac93cf'>RRRC-UNHCR </a>",
      "<br>"
    )
  ) %>%
  addLayersControl(baseGroups = c("Open SM", "Toner Lite", "World Imagery"), overlayGroups = c("Virtual boundary", "Graticule", "Rohingya camps", "Rohingya camps with GBV services"), options = layersControlOptions(collapsed = FALSE)) %>%
  addControl(title, position = "topleft", className = "map-title") %>%
  addMiniMap(toggleDisplay = TRUE, tiles = providers$OpenStreetMap)
## Warning: Unknown or uninitialised column: `Settlement Type`.
## Warning: Unknown or uninitialised column: `District`.
## Warning: Unknown or uninitialised column: `Upazila`.
## Warning: Unknown or uninitialised column: `Union`.
## End