library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
## ✓ tibble  3.1.4     ✓ dplyr   1.0.7
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   2.0.1     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(lubridate)
## 
## Attachement du package : 'lubridate'
## Les objets suivants sont masqués depuis 'package:base':
## 
##     date, intersect, setdiff, union
library(sf)
## Linking to GEOS 3.9.1, GDAL 3.3.1, PROJ 8.0.1
library(leaflet)
library(dataReporter)
## 
## Attachement du package : 'dataReporter'
## L'objet suivant est masqué depuis 'package:dplyr':
## 
##     summarize
source("importer_donnees_csv.R")
## Warning: One or more parsing issues, see `problems()` for details
source("pirateIcon.R")
glimpse(pirate_attacks_sf, width = 67)
## Rows: 7,511
## Columns: 15
## $ date                 <date> 1993-01-02, 1993-01-04, 1993-01-06,…
## $ time                 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ attack_type          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ location_description <chr> "Hong Kong - Luzon - Hainan", "Hong …
## $ nearest_country      <chr> "CHN", "CHN", "CHN", "CHN", "PHL", "…
## $ eez_country          <chr> "TWN", "CHN", "TWN", "CHN", "PHL", "…
## $ shore_distance       <dbl> 357.5023726, 47.4315725, 280.8118709…
## $ shore_longitude      <dbl> 115.825956, 115.825956, 114.302501, …
## $ shore_latitude       <dbl> 22.746644, 22.746644, 22.044867, 29.…
## $ attack_description   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ vessel_name          <chr> "Mv Cosmic Leader", "Mv Tricolor Sta…
## $ vessel_type          <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ vessel_status        <chr> NA, NA, NA, NA, NA, NA, NA, NA, "Anc…
## $ data_source          <chr> "mappingpiracy", "mappingpiracy", "m…
## $ geometry             <POINT> POINT (116.9667 19.7), POINT (116 …
pirate_attacks_sf_ss <- pirate_attacks_sf %>%
  filter(data_source == "imb") %>%
select(
  date,
  attack_type,
  shore_distance,
  vessel_type,
  vessel_status
) %>%
  replace_na(list(vessel_status="Underway")) %>%
  mutate(month_event = month(date),
         year_event = year(date))

Statistiques descriptives

makeDataReport(pirate_attacks_sf_ss, replace = TRUE)
## Data report generation is finished. Please wait while your output file is being rendered.

Exporter les types de navires

pirate_attacks_sf_ss %>%
  group_by(vessel_type) %>%
  st_set_geometry(NULL) %>%
  count() %>%
  arrange(desc(n)) %>%
  write_csv("vessel_types.csv")

Traitement manuel

Je crée manuellement des catégories plus larges, puis je réimporte

custom_vessel_categories <-
  read_csv(
    "data/csv/custom_vessel_categories.csv",
    col_types = cols(vessel_type = col_character(),
                     vessel_category = col_character())
  )
pirate_attacks_sf_ss2 <- pirate_attacks_sf_ss %>% 
  left_join(custom_vessel_categories)
## Joining, by = "vessel_type"
pirate_attacks_sf_ss2 %>% sf::write_sf("data/geojson/pirate_attacks_sf_ss2.geojson")
## Warning in CPL_write_ogr(obj, dsn, layer, driver,
## as.character(dataset_options), : GDAL Error 6: DeleteLayer() not supported by
## this dataset.

Filtrage

pirate_attacks_sf_maps <- pirate_attacks_sf_ss2 %>%
  filter(year_event == 2015, month_event==1)
m <- leaflet(pirate_attacks_sf_maps) %>%
  addTiles() %>%
  addMarkers(
    popup = paste0(
      "Type: ",
      pirate_attacks_sf_maps$vessel_category,
      "<br>",
      "Statut: ",
      pirate_attacks_sf_maps$vessel_status,
      "<br>",
      "Type d'attaque: ",
      pirate_attacks_sf_maps$attack_type,
      "<br>",
      "Distance de la côte: ",
      round(pirate_attacks_sf_maps$shore_distance, 2),
      "km",
      "<br>",
      "Date: ",
      pirate_attacks_sf_maps$date
    ),
    icon = pirateIcon,
    clusterOptions = markerClusterOptions()
  )
m