Vital records

Column

Vital records are records of life events kept under governmental authority, including birth certificates, marriage licenses, separation agreements, divorce and death certificates.

Column

Vital records by regions of Ukraine

Column

Table

---
title: "Vital records of Ukraine (for the first half of 2022)"
date: "9/26/2022"
output:
  flexdashboard::flex_dashboard:
    theme: paper
    source_code: embed
---



```{r}
packages <- c("tidyverse", "flexdashboard",
              "crosstalk", "leaflet", "DT","httr","readxl","dplyr","stringr","rgdal","RColorBrewer","htmltools","geojsonio","sf")
if (length(setdiff(packages, rownames(installed.packages()))) > 0) {
  install.packages(setdiff(packages, rownames(installed.packages())), repos = "http://cran.us.r-project.org")  
}

library(geojsonio)
library(tidyverse)
library(flexdashboard)
library(crosstalk)  
library(leaflet)   
library(DT) 
library(httr)
library(readxl)
library(dplyr)
library("stringr")
library(rgdal)
library(RColorBrewer)
library(htmltools)
library(sf)
library(tigris)

```



```{r echo=FALSE,message=FALSE,warning=FALSE, include=FALSE}

#load and save data 2022

url = 'https://minjust.gov.ua/files/general/2022/08/19/20220819103738-19.xlsx'
httr::GET(url, write_disk(tf <- tempfile(fileext = "2022.xlsx")))
df_2022 <- read_excel(tf,1L,skip=2)

df_all <-df_2022 %>%select(2,4:7,9)%>%
  slice(-(1:3),-(31:34))%>%
  dplyr::rename(Region=1,
                Birth=2,
                Deaths=3,
                Marriage=4,
                Divorce=5,
                `Change name`=6)

df_all$Divorce <-as.numeric(df_all$Divorce)

#pivot longer

df_all<-pivot_longer(df_all,cols=2:6,names_to="Vital record",values_to="Number of records")

df_all$Region <- print(str_replace_all(df_all$Region, "[[*]]", "")) 

#delete special characters 
Region_EN<-c("Kherson Oblast",
"Volyn Oblast",
"Rivne Oblast",
"Zhytomyr Oblast",
"Kyiv Oblast",
"Chernihiv Oblast",
"Sumy Oblast",
"Kharkiv Oblast",
"Luhansk Oblast",
"Donetsk Oblast",
"Zaporizhia Oblast",
"Lviv Oblast",
"Ivano-Frankivsk Oblast",
"Zakarpattia Oblast",
"Ternopil Oblast",
"Chernivtsi Oblast",
"Odessa Oblast",
"Mykolaiv Oblast",
"Autonomous Republic of Crimea",
"Vinnytsia Oblast",
"Khmelnytskyi Oblast",
"Cherkasy Oblast",
"Poltava Oblast",
"Dnipropetrovsk Oblast",
"Kirovohrad Oblast",
"Kyiv",
"Sevastopol")

Region_UA<-c("Херсонська",
"Волинська",
"Рівненська",
"Житомирська",
"Київська",
"Чернігівська",
"Сумська",
"Харківська",
"Луганська",
"Донецька",
"Запорізька",
"Львівська",
"Івано-Франківська",
"Закарпатська",
"Тернопільська",
"Чернівецька",
"Одеська",
"Миколаївська",
"Автономна Республіка Крим",
"Вінницька",
"Хмельницька",
"Черкаська",
"Полтавська",
"Дніпропетровська",
"Кіровоградська",
"м.Київ",
"м. Севастополь")

Region_trans<-data.frame(Region_EN,Region_UA)

df_all2<-dplyr::left_join(df_all,Region_trans,by=c("Region"="Region_UA"))
  
#load and unzip geo data of Ukraine

geojson_path <- 'https://github.com/wmgeolab/geoBoundaries/raw/6b002b1eee2fd9599f1a3af8fe076d694e6decee/releaseData/gbOpen/UKR/ADM1/geoBoundaries-UKR-ADM1_simplified.geojson'


# Read GeoJSON, convert to sf class, add random data as values
Ukraine_geo <- geojson_read(x = geojson_path, what = "sp") %>% 
  st_as_sf(Ukraine_geo_geojson)

Ukraine_geo<-geo_join(Ukraine_geo,df_all2,"shapeName","Region_EN",how ="left")%>%
                  rename("Region (Eng)"="shapeName",
                                "Region (Ua)"="Region")%>%
                  select(c(1,7:9))

View(Ukraine_geo$`Vital record`)
Ukr<- SharedData$new(Ukraine_geo)

```


Vital records {data-icon="ion-stats-bars"}
=====================================  

Column {data-width=200}
-------------------------------------

### **Vital records are records of life events kept under governmental authority, including birth certificates, marriage licenses, separation agreements, divorce and death certificates.**

```{r filter_section}
filter_select(
  id = "Region",
  label = "Region",
  sharedData = Ukr,
  group = ~`Region (Eng)`
)
bscols(
  filter_checkbox(
  id = "Vital record",
  label = "Vital record",
  sharedData = Ukr,
  group = ~`Vital record`
  )
)
bscols(
  filter_slider(
    id = "Number of records",
    label = "Number of records",
    sharedData = Ukr,
    column = ~`Number of records`,
    step = 500,
    round = FALSE,
    sep = "",
    ticks = FALSE
  )
)
```

Column {data-width=500}
-------------------------------------

### Vital records by regions of Ukraine

```{r interactive_map}

labels<-


pal<-colorBin(palette="BuPu",domain = Ukraine_geo$`Number of records`, bins = 5)


Ukr%>%leaflet()%>% 
  addProviderTiles(providers$CartoDB.Positron)%>% 
  setView(lat =49.00000,lng=30.5238,zoom=6)%>% addPolygons( color="#9e8181",weight=1,
                                                           fillColor = ~ pal(`Number of records`),
                                                           fillOpacity = 0.8,
                                                           highlight= highlightOptions(
                                                             weight = 5,
                                                             color = "#666666",
                                                             fillOpacity = 0.7,
                                                             bringToFront = TRUE),
                                                           label = lapply(paste('<p>',Ukraine_geo$`Region (Eng)`, '</p>',
                                                                              '<p>',"Number of records: ", 
                                                                              Ukraine_geo$`Number of records`, '</p>'),HTML)
                                            )%>%
                                                addLegend(pal=pal,
                                                          values=Ukraine_geo$`Number of records`,
                                                          position="bottomright",
                                                          title = "Number of vital records",
                                                          opacity = 1)
```

Column {data-width=300}
-------------------------------------

### Table 

```{r filterable_table}
datatable(Ukr, options = list(
    pageLength = 25, 
 selection="multiple"))


```